假设我们有这个字符串数组:
$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) cast 还是 PHP 的 settype- 和 intval 函数,它也会发生。
它打败了我;为什么会这样?我真的应该关心吗?