在PHP

2013-04-07 84 views
0

操縱參數我與PHP相對缺乏經驗,我試圖做一些改變現有的代碼庫。我有帶有一個數組爲參數的方法,包括:在PHP

public function get_ids(array $order) 
{ 
    ... 
    return $ret_val; 
} 

欲附加的元素添加到該陣列中,與鍵count配對。我知道那個鑰匙不存在。我從PHP文檔中瞭解到,所有變量都是通過引用傳遞的:

函數定義本身足以通過引用正確傳遞參數 。由於PHP 5.3.0,你會得到一個警告說, 「呼叫時間傳遞通過引用」已經過時,當你在 FOO使用&(& $ A);.而作爲PHP 5.4.0中,呼叫時間 取出傳遞通過引用,所以使用它會引發一個致命錯誤。

然而,當我這樣做:

public function get_ids(array $order) 
{ 
    ... 
    $order['count'] = 5; 
    return $ret_val; 
} 

,然後做在調用這個方法的方法var_dump,有一個爲「計數」沒有鑰匙。但是,如果我的get_ids方法返回之前做一個var_dump右邊,有明確count的關鍵。

這是怎麼回事?我顯然不理解PHP的一位負責人,但我平時的谷歌搜索技巧完全失敗了。

+0

這報價是當你調用* *的功能,而不是當你是* *定義功能。如果這是預期的行爲,您仍然應該將函數定義爲通過引用接受其參數。 – nickb 2013-04-07 02:35:20

+0

@nickb OHHHHHH。是的。完全瞭解現在的情況。我認爲他們的意思是「簡單地定義函數意味着它將通過引用傳遞」。顯然不是。謝謝! – 2013-04-07 02:51:14

回答

3

就像在棄用的功能的描述說:

Function definitions alone are enough to correctly pass the argument by reference

因此指定要你通過參考參數傳遞你的函數定義。

public function get_ids(array &$order) 
{ 
... 
} 
+0

OHHHHHH。是的。 PHP完全新手回來困擾我... – 2013-04-07 02:50:32

0

從PHP文檔我是所有的變量都 傳遞按引用:

所有參數都是按值傳遞的,如果不與&前置,並通過引用如果傳遞前加&