PHP
JavaScript
配列

PHPでインデックスを使って配列を組み立てた際の動作

More than 1 year has passed since last update.

自分が思っていたのと違う動作をしていたのでメモ

$list = [];

$list[2] = 'c';
$list[0] = 'a';
$list[1] = 'b';

foreach ($list as $index => $element)
{
var_dump($index, $element);
}

int(2)

string(1) "c"
int(0)
string(1) "a"
int(1)
string(1) "b"

あれ?こんな動作だっけ

ソートされないのはJavaScriptでも同じだったけ?

と思ったので試してみました。

var list = [];

list[2] = "c";
list[0] = "a";
list[1] = "b";

list.forEach(function(element, index) {
console.log(index, element);
});

0 "a"

1 "b"
2 "c"

動作違うのかー。

PHPでは組み立てた後にksortを使わないといけない。PHPの配列は連想配列と言われるけどインデックスでも文字列キーと同じような扱いなのかな。

$list = [];

$list[2] = 'c';
$list[0] = 'a';
$list[1] = 'b';
ksort($list);

foreach ($list as $index => $element)
{
var_dump($index, $element);
}

int(0)

string(1) "a"
int(1)
string(1) "b"
int(2)
string(1) "c"