WEBサービス創造記

WEBサービスを作ったり保守したりしてる人のメモブログです。

PHPの配列の挙動

      2015/05/17

プログラミングPHP 第3版を読んでPHPでの配列の挙動を復習。
割としっかり把握できてないことが多かった。

要素の順番

配列の要素の順番は、デフォルトでは代入された順となる。

$ php -a
php > $array = [];
php > $array[3] = "1st";
php > $array[0] = "2st";
php > var_dump($array);
array(2) {
  [3]=>
  string(3) "1st"
  [0]=>
  string(3) "2st"
}

上記の場合0,3のようにキー値昇順でソートされたりはせず、代入された順番となる。
foreachで回すとこの順番。

php > foreach ($array as $value) {
php { echo "$value\n";
php { }
1st
2st

末尾への要素の追加

`$array[] = “hoge”`のように書くと、配列の末尾へ要素が追加される。

キーが飛んだ場合は最大値のキーの次の値をキーとして追加される。
下記の場合は0,3のキーにすで値が入っていて、この状態で追加してもキーが1ではなく4で入る。

php > $array = [];
php > $array[0] = "aaa";
php > $array[3] = "bbb";
php > $array[]  = "ccc";
php > var_dump($array);
array(3) {
  [0]=>
  string(3) "aaa"
  [3]=>
  string(3) "bbb"
  [4]=>
  string(3) "ccc"
}

キーにマイナスの数値を指定

Rubyだと配列の最後の要素から逆順に数えた要素という指定になる(Perlも?)が、PHPだとキーが”-1″の要素を取得しようとする。

php > $array = [
php >   "1st element",
php >   "2nd element",
php >   "3rd element",
php >   "4th element",
php >   "5th element",
php > ];
php > echo $array[-1];
PHP Notice:  Undefined offset: -1 in php shell code on line 1

参考資料

 - PHP , ,