PHP 配列要素の更新
1. PHP 配列要素の更新
既存の Array 要素を更新(アップデート)するには、添字配列(Indexed Array)の場合は インデックス番号 を、連想配列(Associative Array)の場合は キー名 を参照します。
1.1 例:添字配列の更新
2番目の要素を "BMW" から "Ford" に変更します:
$cars = array("Volvo", "BMW", "Toyota");
$cars[1] = "Ford";注意: 最初の要素の インデックス は 0 です。
1.2 例:連想配列の更新
キー名 を指定して、"year" を 2024 に更新します:
$cars = array("brand" => "Ford", "model" => "Mustang", "year" => 1964);
$cars["year"] = 2024;2. foreach ループ内での要素の更新
foreach ループ内で要素の値を変更する場合、いくつかのテクニックがあります。
一つの方法は、代入時に & 文字を挿入して、要素の値を リファレンス(参照渡し) として割り当てることです。これにより、ループ内で行った変更がオリジナルの Array に直接反映されるようになります。
2.1 例:すべての要素の値を "Ford" に変更する
$cars = array("Volvo", "BMW", "Toyota");
foreach ($cars as &$x) {
$x = "Ford";
}
unset($x); // 参照を解除
var_dump($cars); 注意: ループが終わった後は、必ず unset() 関数を呼び出してください。これを忘れると、Variable$x は最後の Array 要素への リファレンス を保持したままとなり、後の処理で予期せぬ挙動を引き起こす可能性があります。
この影響を実証するために、foreach ループの後に $x の値を変更するとどうなるかを見てみましょう。
2.2 例:unset() を忘れた際の影響
$cars = array("Volvo", "BMW", "Toyota");
foreach ($cars as &$x) {
$x = "Ford";
}
// unset($x) を忘れた場合:
$x = "ice cream"; // 最後の要素(Toyotaだった箇所)が "ice cream" に上書きされる
var_dump($cars);