phpの配列操作で自分では「いける」って思っていたけどだめだったときの経験を記録しておきます。
基本的なところかもしれませんが、同じところでつまずく方もいるかもしれないので、その場合は参考にしていただければと思います。
またそもそももっといい書き方があるよっていう場合はご指摘いただければ幸いです。
「いける」って思ったコード
まず「いける」って思ったけど実行結果が期待どおりにならなかった場合
array-test.php
<?php
$box = array();
for ($i = 1; $i <= 10; $i++) {
if(($i % 2) == 0){
$arr = array($i => "even");
$box = array_merge($box,$arr);
printf($i . "/");
}
}
foreach($box as $key => $value){
printf($key . ":" . $value);
}
?>
実行結果
2/4/6/8/10/0:even1:even2:even3:even4:even
実際にやりたかったことができたコード
次に実際にやりたかったことができた場合
array-test2.php
<?php
for ($i = 1; $i <= 10; $i++) {
if(($i % 2) == 0){
$box[$i] = "even";
printf($i . "/");
}
}
foreach($box as $key => $value){
printf($key . ":" . $value);
}
?>
実行結果
2/4/6/8/10/2:even4:even6:even8:even10:even
実行結果を比較すると、配列のキーが異なっていることがわかります。
phpはじめたときにしばらくはまってしまいました。