|
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.7">配列PHPの配列は、実際には順番付けられたマップです。マップは、 値をキーにマップする型で す。この型は、いくつかの手法で最適化されます。このため、実際の配列 またはリスト(ベクトル)、(あるマップの実装である)ハッシュテーブル、 ディレクトリ、コレクション、スタック、キュー等として使用することが 可能です。PHPの配列には他のPHP配列を値として保持することができるた め、非常に簡単にツリー構造を表現することが可能です。 これらの構造に関する説明は、本マニュアルの範囲外ですが、これらの構 造に各々に関する例を少なくとも一つ見付けることが可能です。これらの 構造に関するより詳細な情報については、データ構造に関する良書を購入 して下さい。 構文array()で指定配列 は、言語構造array() で作成 することが可能です。この構造は、特定の数のカンマで区切られた key => valueの組を引数とします。 key は、整数 または 文字列です。 あるキーが、整数の標準的な表現形式である場合、 そのように解釈されます。(つまり、'8'は 8として解釈されます。一方、 '08'は'08'として解釈されま す。) 値は、何でも構いません。 キーを省略した場合、整数添字の最大値が使用され、新しいキーはそ の最大値+1となります。整数値は負の数となる可能性があるため、 負の添字も有りえます。例えば、最高時の添字が-6 の場合、次のキーは-5となります。 整数添字がまだ存在しない場合、キーは0(ゼロ)となります。 値が既に代入されているキーを指定した場合、元の値は上書きされます。 キーとして true を使用すると、 integer 1がキーとして評価されます。 キーとしてfalseを使用すると、 integer 0がキーとして評価されます。 キーとしてNULLを使用すると、空の文字列として評価 されます。キーとして空の文字列を使用すると、空の文字列のキーとその値を 作成(または上書き)します。空の括弧を用いた場合と同じではありません。 配列またはオブジェクトをキーとして使用することはできません。 これを行なうと、warning: Illegal offset type を発生します。
角括弧構文で作成/修正明示的に値を設定することにより、既存の配列を修正することも可能で す。 これは、角括弧の中にキーを指定することにより、配列に値を代入する ことにより行うことが可能です。キーを省略することも可能です。この 場合、空の角括弧("[]")の変数名として追加して 下さい。
有用な関数配列で使用する便利な関数がたくさんあります。 配列関数 の節を参照下さい。
制御構造foreach が配列用に限定して存在します。この構造は、配列の要素に簡単に連続 的にアクセスする手段を提供します。 配列ですべきこととしてはならないことなぜ、$foo[bar] は使用できないのか?古いスクリプトで次のような構文を見たことがあるかもしれません。 これは間違っていますが、動作します。では、なぜ間違っているのでしょ う? その理由は、構文の節に記述したように、角括弧の間 ('['および']')に式がなけれ ばならないためです。これは、次のように書くことが可能であることを 意味します。 これは、関数の出力を配列の添字として使用する例です。PHPは定数に ついても認識します。前にE_*を見たことがあるか もしれません。
では、なぜ $foo[bar] は動作することが可能なの でしょう? それは、bar が定数式であることを 期待される構文で使用されているためです。しかし、この場合、 bar という名前の定数は存在しません。PHPは、 この場合、あなたが文字列"bar"のようにリテラル bar を指定したが引用符を忘れたと仮定します。 では、なぜ間違っているのでしょう?将来的に、PHPは他の定数またはキーワードを追加したいと思うかもし れず、問題となる可能性があります。例えば、現在でも、 単語 empty および defaultを使用することはできません。 これは、これらが、特別な 予約済みのキーワードである ためです。
例PHPの配列型は非常に解りにくいため、ここで、配列の強力な機能を示す いくつかの例を紹介します。
配列の値をこのようなループで直接変更することはできないことに注意 して下さい。 これを解決するには、次のようにします。 この例は、1から始まる配列を作成します。 配列には順番が付けられます。異なったソート関数を用いて順番を変更 することも可能です。より詳細な情報については、配列関数 を参照下さい。 配列の値は何でも良いため、その値を他の配列とすることも可能です。 これにより、再帰的な配列や多次元の配列を作成することが可能です。 |