上級PHPコラム『Standard PHP Library(SPL) データ構造編』(PHP上級試験対策)
PHP技術者認定機構の吉政でございます。
PHP技術者認定機構の認定スクールであるヒューマンリソシアが
私が企画した、古庄親方のPHPコラム『Standard PHP Library(SPL) データ構造編』を公開しています。
今日が今年の最終営業日という方も多いのではないでしょうか?
今年の仕事は今年のうちに!私も頑張りますwww
仕事の合間にPHPの上級テクニックを学習しませんか?ということで、上級PHPテクニックコラムをご紹介します。
###
SPLに存在する「データ構造用のクラス」について学んでいきましょう。
まずは、PHPに寄らない、一般的な概念としての「データ構造」を整理してみます。
色々と異論もあろうかと思いますが、とりあえず以下程度を想起してみましょう。
配列
スタック
キュー
連想配列
連結リスト(双方向リスト)
循環リスト(双方向循環リスト)
木構造
グラフ
なお片方向系(片方向リスト、片方向循環リスト)は、メモリ等がよっぽどタイトでないかぎりは最近「双方向」で代用されることが多いかと思うので、一端オミットいたします。
さて。
まずPHPは「配列を、言語構造としてもっています」が、実際には中の実装は「ハッシュによる連想配列+リスト」になります。
ですので、例えば通常の数字の添え字配列を「$any_array[5]」なんてアクセスをしていて、例えばこれがC言語だと「any_arrayの型をチェックしてポインタ演算をして+5の位置にある情報」になるのですが、PHPの場合は連想配列なので「5という値をhashしたところにある情報」になります。
また一方で「+リスト」なので、連想配列にもかかわらず「順番を保持している」という、他言語の連想配列になれていると「…なにごと?」と思うような状況を生み出します。
(この続きは以下のコラム本文をご覧ください)
http://resocia.jp/column/287/