2014-01-15 39 views
0

我不是新來的PHP,但我發現有可選參數是有點...獨特的,或者也許它只是我。有人可以解釋爲什麼我會得到一個空陣列嗎?

如果我有以下幾點:

​​

然後做這樣的事情:

$test = new SomeClass(); 
$test->some_method('required', array('optional')); 

我回來爲var_dumparray(0){}

我甚至試過:

$test = new SomeClass(); 
$array = array('optional') 
$test->some_method('required', $array); 

具有相同的結果。是否因爲我已經定義$optional_array已被設置爲空數組?我發誓這是你如何設置optional parameters, according to example 3那麼爲什麼它堅持默認的空陣列?爲什麼沒有看到嘿,這已經確定了。

+1

嘗試'的var_dump($ optional_array);'這是不是一個函數。 – putvande

回答

1
​​

使用var_dump($optional_array);var_dump($optional_array());

+0

所以我意識到我的錯誤>。>謝謝。我只是試了一下。同樣的問題。我需要通過參考傳入嗎? – user3200412

+0

@ user3200412同樣的問題,你是什麼意思?我試過你的代碼,現在它工作的很完美。 – msg7086

0

您試圖訪問陣列,就好像它是一個功能。所以去除(),它會工作:的

var_dump($optional_array); 

代替

var_dump($optional_array()); 
0

你必須對你的var_dump外來的括號。它試圖調用一個以數組形式傳入的匿名函數。

試試這個:

class SomeClass{ 
    public function some_method($required_param, $optional_array = array()){ 
     var_dump($optional_array); 
    } 
} 

$test = new SomeClass(); 
print "one\n"; 
$test->some_method('required', array('optional')); 
print "two\n"; 
$test->some_method('required'); 

我的機器上輸出是:

one 
array(1) { 
    [0]=> 
    string(8) "optional" 
} 
two 
array(0) { 
} 
相關問題