前回から間が空いてしまいましたが PHP の配列に関する話を またやっていこうと思います。
PHP の配列は キーを省略して定義することができます。
$a[] = "a"; $a[] = "b"; $a[] = "c"; print_r($a);
キーを省略した場合は その配列の最大のキーの値に 1 を足した値がキーになります。 (配列が空の場合は 0 になります)
Array ( [0] => a [1] => b [2] => c )
ただし、ここで最大値を求めるキーは 数値のキーのみになります。 文字列のキーが存在してもそれは無視されます。
$a["test1"] = "a"; $a["test2"] = "b"; $a[] = "c"; $a[] = "d"; print_r($a);
Array ( [test1] => a [test2] => b [0] => c [1] => d )
このように文字列のキーは無視して 数値のキーが設定されます。
次のようなこともできます。
$a["test1"] = "a"; $a[] = "b"; $a["test2"] = "c"; $a[] = "d"; print_r($a);
Array ( [test1] => a [0] => b [test2] => c [1] => d )
この仕様を利用して 配列のキーを 1 から始めることもできます。
$a[1] = "a"; $a[] = "b"; $a[] = "c"; print_r($a);
Array ( [1] => a [2] => b [3] => c )
次のようにキーの値の間が空いていても詰められません。
$a[10] = "a"; $a[] = "b"; $a[20] = "c"; $a[] = "d"; $a[5] = "e"; $a[] = "f"; print_r($a);
Array ( [10] => a [11] => b [20] => c [21] => d [5] => e [22] => f )
PHP 4.3 からキーの最大値が、
負の数値の場合
キーは最大値 +1 ではなく
0 になります。
$a[-5] = "a"; $a[] = "b";
Array
(
[-5] => a
[0] => b
)