menu
書いてる野郎
orebike@gmail.com
$hoge = array("a", "b", "c"); foreach($hoge as $key => $value){ echo $key; echo $value; }
とすると、value 部分はもちろん a
, b
, c
が出るのだが、key 部分は 0
, 1
, 2
が出る。
インデックス指定で突っ込んだ場合それが出る
$hoge = array(); $hoge[2] = "a" $hoge[0] = "b" $hoge[1] = "c"; foreach($hoge as $key => $value){ echo $key; echo $value; }
とすると、value は a
, b
, c
が出るのだが、key 部分は 2
, 0
, 1
が出る。
インデックス順に出ないし、key がそのまま出る。
通常の配列を foreach で走査した場合、それはインデックス順ではなく入れた順で処理されるので注意
$a = []; $a[3] = "three"; $a[1] = "one"; $a[2] = "two"; $a[0] = "zero"; foreach($a as $b){ echo "{$b}\n"; }
入れた順で出る。インデックス順では出ない。
three one two zero
なのでインデックス順での走査をしたいなら、ksort 関数で配列内部の並び順をキーの昇順で破壊的に並び替えることができるのでこれでOK
$a = []; $a[3] = "three"; $a[1] = "one"; $a[2] = "two"; $a[0] = "zero"; ksort($a); foreach($a as $b){ echo "{$b}\n"; }
zero one two three