スタッフブログ

  • 最新配信
  • RSS

PHPの組み込み関数の変な挙動

 : 技術全般 2008/10/3 10:23

Blogger's Avatar

satoです。
PHPは、昨日のほとんどが組み込み関数によって実装されているため、各関数の命名規則はprefix等で統一されていることが多いです。
しかし、中には命名規則が一致してないのに似たような挙動をするものがあったり、一致しているのに微妙に挙動が違うものがあります。今回はsatoが気になった例を紹介します。

・array_pop/array_shift
配列の最後の値を取り出すarray_popと、配列の最初の値を取り出すarray_shiftですが、若干挙動が違います。
array_popはそのままなのですが、array_shiftは
array_shift() は、array の最初の値を取り出して返します。配列 array は、要素一つ分だけ短くなり、全ての要素は前にずれます。 数値添字の配列のキーはゼロから順に新たに振りなおされますが、 リテラルのキーはそのままになります。
PHP: array_shift - Manual
とあります。 つまり、
array(100=>'a', 110=>'b', 120=>'c');
という配列があった場合、array_popの結果は
array(100=>'a', 110=>'b');
ですが、array_shiftは
array(0=>'b', 1=>'c');
となってしまいます。 array_popと対象の動作を行いたい場合は、array_sliceの$preserve_keysをTRUEにして動作させるとうまく行きます。ただしPHP5専用なので、PHP4では他の方法で行う必要があります。

他にも似たような例は存在すると思うので、気になる場合は必ずPHPマニュアルを参照するようにしましょう。

トラックバック

スタッフブログ最新
カテゴリ一覧

〒104-0061 東京都中央区銀座1丁目3番3号 G1ビル7階
お問い合わせ TEL 03-3524-8860

Copyright(c) 2012 RYUS.All Rights Reserved.