この文字列の配列があるとします。
$arrString = ["1", "2", "3"];
値を整数に変換する従来の方法の1つは、次のようなものです。
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への参照として最後の値を割り当てました。これは、ループで参照を使用するときに常に最後の要素に発生します(要素が1つしかない場合でも)。また、(int)キャストまたはPHPのsettype-およびintval関数を使用する場合にも発生します。
それは私を打ち負かします。なぜこうなった?そして、私は本当に気にする必要がありますか?