說我們有這個字符串數組:值轉換爲整數的在PHP中將字符串數組轉換爲整型數組時引用意外輸出時使用引用?
$arrString = ["1", "2", "3"];
一種傳統的方式是像這樣:
foreach ($arrString as $key => $value)
$arrString[$key] = (int) $arrString[$key];
echo var_dump($arrString);
此輸出:
array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }
很多期待。然而,我相信使用參考是一個更快的方式來完成相同的工作:
foreach ($arrString as &$strValue)
$strValue = (int) $strValue;
echo var_dump($arrString);
那麼猜猜它輸出什麼?
array(3) { [0]=> int(1) [1]=> int(2) [2]=> &int(3) }
也就是說,它將最後一個值指定爲int的引用。當在循環中使用引用時(即使只有一個元素),這總是發生在最後一個元素上,而且如果使用(int)強制轉換或PHP的settype和intval函數,它也會發生。
它擊敗了我;這是爲什麼發生?我應該真的在意嗎?
fyi-'array_walk($ arr,'intval');' – goat
@chris - 整潔高效 –