2013.
12.
30
18:24:43
結論から書けば
で先頭の要素を取り出せます。
でもこれだと取り出した要素が元の配列から無くなるので
の方が使い勝手が良いでしょうね。
ちなみに末尾から取り出すのは
と言いたいところですが、こちらもやっぱり取り出した要素が元の配列から無くなるので
を使った方が良いと思います。
ちなみに、何でわざわざこんなことをメモっているかと言いますとね。
実は自分のところのWebサービスにしょぼいバグを埋め込んでしまったのです。
とある配列の先頭要素だけが必要だったのですが、うっかり
のように書いてしまいました。
これ、$aryが連想配列だと正常に機能しない……もとい、
『キー値が添字の、配列っぽい連想配列』以外では機能しないのですよね。
この指定は「先頭の要素を取得」ではなく「キーが数値0の要素を取得」な指定ですから。
PHPの配列はすべて連想配列です。一見すると配列っぽい奴も全部連想配列です。
単純にキー値が整数の連想配列が普通の配列っぽく見えるだけ。
添字指定で配列の要素にアクセスするような処理を書くと、
思わぬバグの元になりますのでご注意ください。
素直にforeachを使うか、上に書いたように関数を使って要素を取り出してくださいね。
$val = array_shift($ary);
で先頭の要素を取り出せます。
でもこれだと取り出した要素が元の配列から無くなるので
$val = reset($ary);
の方が使い勝手が良いでしょうね。
ちなみに末尾から取り出すのは
$val = array_pop($array);
と言いたいところですが、こちらもやっぱり取り出した要素が元の配列から無くなるので
$val = end($ary);
を使った方が良いと思います。
ちなみに、何でわざわざこんなことをメモっているかと言いますとね。
実は自分のところのWebサービスにしょぼいバグを埋め込んでしまったのです。
とある配列の先頭要素だけが必要だったのですが、うっかり
$val = $ary[0];
のように書いてしまいました。
これ、$aryが連想配列だと正常に機能しない……もとい、
『キー値が添字の、配列っぽい連想配列』以外では機能しないのですよね。
この指定は「先頭の要素を取得」ではなく「キーが数値0の要素を取得」な指定ですから。
PHPの配列はすべて連想配列です。一見すると配列っぽい奴も全部連想配列です。
単純にキー値が整数の連想配列が普通の配列っぽく見えるだけ。
添字指定で配列の要素にアクセスするような処理を書くと、
思わぬバグの元になりますのでご注意ください。
素直にforeachを使うか、上に書いたように関数を使って要素を取り出してくださいね。