PHPの配列は配列ではないので気をつけろ
PHPの配列は配列ではない。
PHP の配列は、実際には順番付けられたマップです。
http://php.net/manual/ja/language.types.array.php
他の言語でいうところの配列は、PHPでは添字がキーになった辞書である。
なので、値のリストと、キー・値のペアを一緒に混ぜ込めてしまう。
<?php //$arr = array(13, 52, "seven" => 7, 634); PHP5.3以前 $arr = [13, 52, "seven" => 7, 634]; // PHP 5.4以降 print_r($arr); //=> Array //=> ( //=> [0] => 13 //=> [1] => 52 //=> [seven] => 7 //=> [2] => 634 //=> )
なんだこれ。
順序付けられた(be ordered)マップなので、辞書として初期化すると、その順序で取り出せる。
<?php foreach (["one" => "eins", "two" => "zwei", "three" => "drei"] as $en => $de) { echo "\$en: $en, \$de => $de\n"; } //=> $en: one, $de => eins //=> $en: two, $de => zwei //=> $en: three, $de => drei
配列は配列ではなくて、辞書には順番があって、PHPを扱うときは意識を切り替えないといけないから気をつけろ。