#すべてが1になる
<?php
$array = array(
1 => "a",
"1" => "b",
1.5 => "c",
true => "d",
);
var_dump($array);
?>
この結果ってなんになると思います?
array(1) {
[1]=>
string(1) "d"
}
Why PHP Array!?
なんでこうなるの!?
どうやら「1」「"1"」「1.5」「true」は、すべて「1」と見なされるみたい。
結局の所
<?php
$array = array(
1 => "a",
1 => "b",
1 => "c",
1 => "d",
);
var_dump($array);
?>
ってことらしい。
まぁ1==true
は成り立つしね、まぁまぁ。
「1.5」は意味わからんけど。
#マイナス思考
<?php
$array = array(
100 => -100,
-100 => 100,
);
var_dump($array);
?>
この結果ってなんになると思います?
array(2) {
[100]=>
int(-100)
[-100]=>
int(100)
}
Why PHP Array!?!?
これはキッチリわかれるんかい!?!?
じゃぁさっきの「1.5」もキーとして認めてあげて!!
#はい順番にならんで~
<?php
$array = array(
"a",
"b",
6 => "c",
"d",
);
var_dump($array);
?>
この結果ってなんになると思います?
array(4) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[6]=>
string(1) "c"
[7]=>
string(1) "d"
}
Why PHP Array!?!?!?
そこに並ぶの!?!?!?
2になると思ったよ…
キーの指定がない場合は、最後のキーを参照して格納するみたい。
#俺はオンリーワンだから
<?php
$array = array(
"a",
"b",
'X' => "c",
"d",
);
var_dump($array);
?>
この結果ってなんになると思います?
array(4) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
['X']=>
string(1) "c"
[2]=>
string(1) "d"
}
Why PHP Array!?!?!?!?
「'X'」の次は「'Y'」じゃないの!?!?!?!?
あくまでキーの整数値を参照ということみたい。
#ゴーストインザシェル
$array = array(1, 2, 3, 4, 5);
foreach ($array as $i => $value) {
unset($array[$i]);
}
$array[] = 6;
print_r($array);
この結果ってなんになると思います?
array(1) {
[5]=>
int(6)
}
Why PHP Array!?!?!?!?!?
unset()
で消したはずじゃ!?!?!?!?!?!?
彼らのゴーストはまだ消えていないんだね…。
#まとめ
PHPの配列って癖が強い気がする…。
他の言語ってどうなんだろう?