hnwの日記

PHPの配列のキーについて調べてみる

先日書いた「PHPの奇妙なround関数」は、重箱の隅をつつくような内容の割には注目を頂いたようで何よりです。ブックマーク数が増えていくのを見るのはとても楽しい経験でした。気をよくして他の持ちネタも披露してみます。今回はPHPの配列のキーに関して簡単に紹介した上で、関連してバグなのか仕様なのかわからない挙動を指摘します。


まず、PHPの配列について簡単に紹介します。PHPには配列と連想配列の区別がありません。これは他の言語ではあまり見られない特徴だと思います。PHPのarrayはいわゆる配列と連想配列の両方の性質を持っていますが、他の言語で言うと連想配列で実現されていると言えます。この記事ではPHPの流儀で「配列」と呼びますが、他の言語のユーザーにとっては連想配列と読み替えた方が自然かもしれません。連想配列なのに代入された順番を覚えていたりするので、結局違和感があるかもしれませんが…。


PHPの配列の実装についてはソースコードを読んでもいいと思いますが、小泉さんの書かれた図(ハッシュテーブルの実装)を見れば想像がつくのではないでしょうか。

また、本家マニュアルの配列の説明にも案外色々と書いてあります。

続きを読む