1
請考慮一下測試:投下的foreach PHP數組不通過引用傳遞變量
$data=[["id"=>1,"text"=>"One"],["id"=>2,"text"=>"Two"]];
foreach((array)$data as &$iter)
$iter["append"]=true;
print_r($data);
這是輸出
Array
(
[0] => Array
(
[id] => 1
[text] => One
)
[1] => Array
(
[id] => 2
[text] => Two
)
)
我想ITER一個數組,並添加里面的另一個關鍵關聯數組,這就是爲什麼$ iter被ref傳遞的原因。 我在「foreach」中設置了強制轉換,以確保通過foreach語句可以接受沒有錯誤的空/空變量。
正如你在輸出中看到的那樣,foreach不會追加值,但是如果我刪除了它的工程。
foreach($data as &$iter)
$iter["append"]=true;
print_r($data);
這是(右)輸出
Array
(
[0] => Array
(
[id] => 1
[text] => One
[append] => 1
)
[1] => Array
(
[id] => 2
[text] => Two
[append] => 1
)
)
我解決了一個單獨的命令在foreach外鑄造,但我的問題是:
這是一個錯誤?
此測試在PHP版本5.6.14(Apache的2.4窗口-10)
鑄造值可以是與變量內部值不同的值。所以,如果它*會工作,它會隱含分配:'$變量=(數組)$變量;'。 – Rizier123
好的,但不同的值意味着不同的參考? – Tobia
對於數組是的。 –