PHP中的foreach循環結構是一個常用的遍歷數組的方法,但有時候我們需要對數組的每個元素進行修改,這時就要用到引用傳遞符號&。我們稱這種方式為“引用傳遞”或“引用賦值”,下面我們來詳細了解一下foreach &$的用法。
對于普通的foreach循環結構,我們循環時只能獲取到數組的每個元素的值,例如:
$nums = array(1, 2, 3, 4, 5); foreach ($nums as $val) { echo $val . " "; }
上面的代碼會輸出:1 2 3 4 5
但是有時候我們需要修改數組中每個元素的值,這時候就要使用引用傳遞符號&了。例如我們要將數組中的每個元素都加上1:
$nums = array(1, 2, 3, 4, 5); foreach ($nums as &$val) { // 注意這里加上了& $val++; // 對每個元素進行加1操作 } unset($val); // 取消引用 echo implode(" ", $nums);
上面的代碼會輸出:2 3 4 5 6。這里要注意,如果不在foreach循環之后調用unset()函數取消引用,可能會引發意料之外的錯誤。
引用傳遞符號&還可以用于修改多維數組中的值。例如有以下二維數組:
$nums = array( array(1, 2, 3), array(4, 5, 6) ); foreach ($nums as &$arr) { foreach ($arr as &$val) { $val *= 2; // 對每個元素進行乘2操作 } unset($val); // 釋放最后一個元素的引用 } unset($arr); // 釋放最后一個數組的引用 echo json_encode($nums);
上面的代碼會輸出:[[2,4,6],[8,10,12]]。
需要注意的是,引用傳遞符號&只對foreach循環之內有效。例如下面的代碼是無法改變數組中的值的:
$nums = array(1, 2, 3, 4, 5); foreach ($nums as &$val) { $val++; // 對每個元素進行加1操作 } unset($val); // 取消引用 function test(&$arr) { foreach ($arr as &$val) { $val++; // 對每個元素進行加1操作 } unset($val); // 釋放最后一個元素的引用 } test($nums); echo implode(" ", $nums);
上面的代碼會輸出:2 3 4 5 6,而不是3 4 5 6 7。
到這里,我們對foreach &$的使用方法已經有了比較深刻的理解。在實際開發中,我們需要根據具體情況選擇合適的方法來操作數組中的元素,提高代碼的效率和可讀性。
上一篇ajax php分頁
下一篇ajax 符號提交