配列

PHP ManualのArray部分を読む。

array()で作る配列のindexはintegerでもstringでも良いみたい。

<?php
$arr = array("foo" => "bar", 12 => 1);
echo $arr["foo"]; # bar
echo $arr[12];    # 1
?>

indexにintegerとstringが混同してるのが変な感じします。

hashだと思えばいいのか。

floatのkeyはintegerに変換されるようです。

<?php
$arr = array(3.2 => 2);
echo $foo[3]; # 2
?>

valueにはすべてのtypeを持てる。

<?php
$arr = array("somearray" => array(6 => 5, 13 => 2));
echo $arr["somearray"][13]; # 2
?>


keyが指定されなかった場合は最も大きいintegerのkeyに1足した値がkeyとなる。

<?php
$arr = array(2 => "a", 3, 2, 5 => 4);
# array(2 => "a", 3 => 3, 4 => 2, 5 => 4);
?>

配列の代入。keyを指定しなかった場合はもっとも大きいintegerのkeyに1足した値がkeyとなる。valueを削除するにはunset()を使う。

<?php
$arr = array(2 => 'a', 3, 2, 5 => 4);
$arr[] = 'b'; 
echo $foo[6];   # b
unset($foo[2]); # 要素の削除
unset($foo);    # 配列fooを削除
?>

unsetで要素を削除しても配列自身は残っている。このあとkeyを指定せずに代入すると、もともとあったkeyの中で最も大きいintegerのkeyに1足した値がkeyとなる。

<?php
$arr = array(1,2,3,4);
print_r($arr);

# 全ての項目を削除
foreach ($arr as $i => $value){
    unset($arr[$i]);
}

# 配列$arrに6を追加
$arr[] = 5;
print_r($arr);
?>

結果は、

Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
)
Array
(
[4] => 5
)