PHP/配列操作/走査する

PHP/配列操作/走査する

通常の配列(連想配列ではない)に対するkey指定の foreach

$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 で処理される順番に注意

通常の配列を 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
php/ope/array_ope/walking.txt · 最終更新: 2020-04-28 16:33 by ore