1. php函數調用參數的問題,主要是參數數量不確定。
參數不確定的情況下敢不敢把所有的參數和值按照key=>value的性質組織成數組,然後json_encode一下,函數調用的時候傳遞一個參數,參數的值就是這個json,然後過去再把json_decode成數組?你覺得呢?
2. php中類的構造函數參數問題
其實很多OOP語言都差不多,對於對象的傳遞是引用,如果你不想對象被引用,那你需要把對象clone一個新對象。 字串與數值的是值傳遞。
3. PHP調用類的函數&session傳遞對象問題
使用SESSION存儲的對象時,需要載入該對象所屬類的定義。在你的例子中,SESSION中的對象為a的實例,你必須包含定義類a的文件,否則對象會失效。即會得到不完整類PHP_Incomplete_Class。這個類類似於stdClass,失去了原有對象定義的方法。
望採納,謝謝支持!
4. php對象:對象傳入函數問題
函數在調用的時候,參數會被重新開辟內存空間的。
也就是說:
你傳值穿的是$p1,但在函數test運行的時候會另開辟一個空間,復制一遍$p1,之後再函數中操作的內存都是這個函數新開辟的空間。在這個函數test消亡的時候,這個空間被釋放。
所以說你這個根本就沒有修改了$p1的值,只是復制了一遍,然後改了,然後刪了。
如樓上說的,如果你在參數前面加上"&"符號,這個叫引用。則在參數運行的時候不會另外的開辟內存空間,而是用你的參數的內存空間。
對於函數你可以看看c或者c++語言的函數部分,他們是一樣的。給你個例子:
<?php
function swap(&$a,$b){//$a$b叫形參,只是在表示第一個參數第二個參數
$a=20;
$b=10;
}
$x=10;
$y=20;
swap($x,$y);//swap中第一個參數是帶引用的,被改變了值,第二個參數沒有引用,並不會改變參數的值
echo "x=".$x." y=".$y;//結果 x=20 y=20
?>
5. php 函數參數問題
直接return $rows就行了
6. php調用函數時,使用某個參數的前面的參數默認值時,應該怎麼處理
PHP不支持這種調用方式,你的需求是不能實現的。
如果你不能改動函數,那麼你可以做一個封裝。PHP的語法比較靈活,有幾種替代方式你可以借鑒。這些例子都有廣泛的應用。
示例一:如果參數值為null,則在函數里強制賦值為默認值
1
2
3
4
5
6
7
8
<?php
function foo2($a=1,$b=2,$c=3) {
if ($a === null) $a=1;
if ($b === null) $b=2;
if ($c === null) $c=3;
foo($a, $b, $c);
}
foo(1, null, 3);
示例二:使用數組參數
<?php
function foo3($array=array()) {
extract($array);
if (!isset($a)) $a=1;
if (!isset($b)) $b=2;
if (!isset($c)) $c=3;
foo($a, $b, $c);
}
foo(array('a'=>1, 'c'=>3));
python是支持你所說的那種調用方式的:
def foo(a=1, b=2, c=3):
pass
foo(a=1, c=3)
7. php對象調用類的函數
調用方法getdir返回字元串,但沒有輸出到頁面顯示,也沒有賦值操作,不知道有什麼用
方法img2data定義中的$imgfrom($imgsrc);這一句完全沒看懂,在我的水平上理解這種寫法是錯的。
方法_imgfrom定義中getimagesize這個函數不知道來自哪兒。
總結:太混亂了。
類中訪問內部屬性和方法,要用$this->屬性名/方法名
8. PHP函數方法里的參數可以是本函數對象嗎,QueryResponse Query(Query $parameters)這個函數我一直沒明白
QueryResponse Query (Query $parameters)
‖ ‖ ‖ ‖
返回值類型 方法名 參數類型 參數
9. php如何調用函數
PHP函數調用與Java/C/C++是一樣的額,通過函數名(參數列表)就可以了,
舉個栗子:
圖中,有兩處函數調用,一開始的session_start()是調用的PHP函數,validate_user($username, $password)是用戶自定義函數,同樣的方式調用。
10. php中在外部怎樣調用函數裡面的參數
你這是一個類方法么,如果是你可以用
$result=array();
functiongetResult($ret,$i=0){
foreach($retas$k=>$v){
global$resultaaa;
$tmp=array();
$tmp["col_id"]=$v["col_id"];
$tmp["col_pid"]=$v["col_pid"];
$tmp["col_path"]=$v["col_path"];
$tmp["col_title"]=$v["col_title"];
$this->result[$i++]=$tmp;
if($v['k']!=NULL){
$i=$this->getResult($v['k'],$i);
}
}
return$i;
}
$this->result;
如果不是類方法,你的$i = $this->getResult($v['k'],$i); 這一句是錯誤的,
你可以參考風雲style的答案,或者增加一個傳址參數
functiongetResult($ret,$i=0,&$result = array()){}
外面直接用$result 就是方法裡面修改後的變數