PHP の配列とデータ構造

不言
不言オリジナル
2018-07-06 09:20:181762ブラウズ

この記事では、主に php の配列とデータ構造について紹介しますが、参考になると思いますので、皆さんにも共有します。必要な方は、

Arrays in php# を参照してください。 ##配列の概要 --- PHP は弱い型指定言語であるため、配列は任意の型のデータを任意の数だけ格納でき、ヒープ、スタック、キューなどのデータ構造の機能を実現できます。要素数に応じて配列容量を自動調整できます。

分類

インデックス配列---添字は整数であり、ほとんどの言語の配列と同様です。
連想配列---添字は、順序付けされておらず、繰り返しのないキーであり、対応する値にマップされます。

(1) 配列の定義
1. 直接代入による配列の宣言
変数名の後ろに大括弧「[]」で囲んだ数字を使用してインデックス配列を宣言し、文字列を使用します。連想配列を宣言します。
$配列変数名 [インデックス値] = データの内容 //インデックス値 (添え字) は文字列または整数です。
配列変数を宣言する場合、数値と文字列を組み合わせて使用​​することもできます。下付き文字 方法。ただし、このメソッドが 1 次元配列に使用されることはほとんどありません。
$contact[0]=1
$contact["id"]=1
$contact[1]="Company A"
$ contact["Company"]="Company A"
上記のコードでは、配列 $contact が宣言されており、添字には数字と文字列の組み合わせが使用されています。これには、インデックスまたはリレーショナル メソッドを使用してアクセスできます。
インデックス配列を宣言する場合、インデックス値が増加する場合は、角括弧内にインデックス値を指定する必要はありません。デフォルトでは、0 から始まり、順番に増加します。 PHP では、初期化時に不連続な添字値が指定されている限り、インデックス配列の添字値は不連続であっても構いません。
$contact[]=1; //デフォルトの添字は 0
$contact[14]="Gao"; "Company A"; //最も高い添字値に従って 1 を追加すると、添字は 15 になります
$contact[14]=110; //下付き文字 14 の要素が再割り当てされます
$contact[ ]="php";使う 使う 使う ‐ ‐ オフアウト アウト アウト アウト アウト アウト オフ ‐ ‐ ‐ ‐‐‐‐‐‐‐‐‐‐‐‐‐‐ ; 110 [15] => Company A [16] => php )

2. array() 言語構造を使用して宣言します。配列
array() 言語構造を使用して、新しい配列を作成できます。カンマで区切られた任意の数のキー => 値のペアを受け入れます。
$Array 変数名=array(key1=>value1,key2=>value2,...,keyN=>valueN,) // キー (キー) は整数または文字列値 (値) です。任意のタイプの値を指定できます。
=> を使用して添字を指定しない場合、デフォルトでインデックス配列が使用され、インデックス値はデフォルトで 0 から順番に増加します。 array() 言語構造を使用して配列を宣言するときにデフォルトのインデックス値を使用したくない場合は、=> 演算子を使用して非連続のインデックス値を指定できます。コードは次のとおりです
$contact=array(1,14=>"Gao", Company A,14=>110,php);
print_r($contact); > 1 [14] => 110 [15] => Company A [16] => php )
注: 文字列として表現される配列インデックスは、常に引用符で囲む必要があります。たとえば、$foo[bar] の代わりに $foo['bar'] を使用します。ただし、キー名の前後に常に引用符を付けるという意味ではありません。定数または変数のキー名を引用符で囲む必要はありません。そうしないと、PHP はそれらを解析できません。

(2) 配列を走査する
1. for ステートメントを使用して配列をループします for ステートメントを使用して配列を走査するには、配列の添字が連続しない数値インデックス値を指定できるだけでなく、添字として文字列を含む連想配列もあるため、PHP で配列をループするために for ステートメントが使用されることはほとんどありません。

2. foreach ステートメントを使用して配列をループする
foreach 構文構造は、配列を走査する簡単な方法を提供します。 foreach は配列とオブジェクトにのみ適用できます (PHP5 以降はオブジェクトの走査をサポートしています)。他のデータ型の変数や初期化されていない変数に適用しようとすると、エラーが発生します。構文は 2 つあります:

 foreach (array_expression as $value){
        第一种
    }
 foreach (array_expression as $key => $value){
        第二种
    }

foreach の詳細については、PHP 公式マニュアルを参照してください

3. list()、each()、および while ループを組み合わせて配列を走査する
each() -- 配列配列内の現在のポインター位置のキーと値のペアを返し、配列ポインターを移動しますフォワード。 each() が実行された後、配列ポインタは配列内の次の要素に留まるか、配列の終端に達すると最後の要素に留まります。 each を使用して配列を再度反復処理する場合は、reset() を使用する必要があります。
list() -- 配列内の値をいくつかの変数に割り当てます。 array() と同様、これは実際の関数ではなく、言語構造です。 list() は、1 つのステップで一連の変数に値を割り当てます。 list() は数値インデックス付きの配列でのみ使用でき、数値インデックスが 0 から始まることを前提としています。
補足:
Each()は要素を毎回読み込み、配列にまとめて返しますが、要素が無い場合はfalseを返します。返される配列キー名は 0,1,key,value です。0 はキーと等しく、1 は値と等しくなります。
list() は奇妙な構文ですが、配列に数値的にインデックスを付けるためにのみ使用され、インデックスは 0 から始まるものと想定されています。 list(,,var)=array;
while(list(key,value) = each($array)){}

4. 配列の内部ポインタ制御関数を使用して配列を走査する
配列ポインタを制御するために、PHP にはいくつかの組み込み関数が用意されています。現在のポインタ位置の内容データ
-->key() - 現在のポインタ位置のインデックス値を取得します
-->prev() - 配列の内部ポインタを 1 桁巻き戻します
-->next() - Return 配列内の内部ポインタを 1 ビット前方に移動します
-->end() - 配列の内部ポインタを最後の要素にポイントします
-->reset( ) - 配列の内部ポインタを最初のユニットにポイントします


(3) 事前定義された配列 php4.1.0 以降、PHP は追加の事前定義された配列のセットを提供します。変数には、Web サーバーとクライアント、動作環境、およびユーザー入力データからの変数が含まれます。これらはグローバル スコープで自動的に有効になるため、自動グローバル変数またはスーパーグローバル変数と呼ばれることがよくあります。 PHP では、ユーザーはスーパー グローバル変数をカスタマイズできないため、変数をカスタマイズするときは、事前に定義されたグローバル変数と同じ名前を使用しないようにする必要があります。一般的に使用されるグローバル配列は次のとおりです。
-->$GLOBALS — グローバル スコープで使用可能なすべての変数を参照します
-->$_SERVER — サーバーおよび実行環境の情報
-->$_ENV —環境変数
-->$_GET — HTTP GET変数
-->$_POST — HTTP POST変数
-->$_REQUEST — GET、POSTで構成されるHTTPリクエスト変数。 COOKEEスクリプトに送信された変数は信頼に値しません
-->$_FILES — HTTP ファイルアップロード変数
-->$_SESSION — セッション変数
-->$_COOKIE — HTTP Cookie、経由http Cookie によってスクリプトに送信される変数


(4) 配列関連の処理関数1. 配列のキーと値の操作関数
-->array_values(): return 配列内のすべての値
-->array_keys(): 配列内のすべてのキー名を返します
-->in_array(): 配列内に特定の値が存在するかどうかを確認します。配列値内の指定された値を検索します。 Array_search() も使用できます。
-->array_key_exits(): 指定されたキー名またはインデックスが配列内に存在するかどうかを確認します。
-->array_flip(): 配列内のキーと値を交換し、交換された配列を返します。値が複数回存在する場合、最後のキー名がその値として使用され、前の値が上書きされます
-->array_reverse(): 配列内の要素の順序を逆にし、新しい配列を作成して返します。 。つまり、配列要素を逆の順序で配置します。

2. 配列要素の数と一意性をカウントします
-->count(): 配列内の要素の数またはオブジェクト内の属性の数を計算します
--> array_count_values(): 配列内のすべての値の出現数をカウントします
-->array_unique(): 配列内の重複する値を削除し、新しい配列を返します

3. 関数コールバック関数を使用して配列を処理する
-->array_filter(): コールバック関数を使用して配列内の要素をフィルタリングし、ユーザー定義関数によってフィルタリングされた新しい配列を返します
-->array_walk( ): コールバック関数を配列内の各要素に適用し、成功した場合は TRUE を返し、それ以外の場合は FALSE
を返します -->array_map(): 指定された配列の要素にコールバック関数を適用します (複数の配列を処理できます)。ユーザー定義関数が適用された後に配列を返します
- ->array_filter(): コールバック関数を使用して配列内の要素をフィルターし、ユーザー定義関数によってフィルターされた新しい配列を返します
-->array_filter(): コールバック関数を使用して配列内の要素をフィルターし、ユーザー定義関数でフィルターされた新しい配列を返します。 カスタム関数でフィルターされた新しい配列

4、配列ソート関数

#5、配列の分割、マージ、分解、結合
-->array_slice() : 条件に基づいて配列の値を取り出し、戻り値
-->array_splice( ): 条件に基づいて配列内の値を選択し、それらを削除するか、他の値に置き換えます
-->array_combine(): 1 つの配列の値をキー名として使用し、別の配列の値を使用して配列を作成します。配列を値として使用します
-->array_merge(): 1 つ以上の配列をマージします
-->array_intersect(): 配列の交差を計算します
-->array_diff(): 差分セットを計算します配列の数
-->array_slice(): 条件に基づいて配列内の値を取り出し、それを返します

6. その他のよく使用される関数
-->array_rand(): ランダム配列から 1 つ以上の要素を削除します
-->shuffle(): 配列内の要素の順序をシャッフルします
-->array_sum(): 配列内のすべての値の合計を計算します
-->range(): 指定された範囲内の単位を含む配列を作成します

(5) 配列とデータ構造
厳密に型指定されたプログラミング言語では、専用のデータ構造があります。解決。通常、任意のタイプのデータを格納できるコンテナが作成されます。コンテナの容量はコンテナに格納されたデータに基づいて決定でき、コンテナの構造はリンク リスト、スタックなど可変長にすることができます、キューなど、すべてデータ構造であり、一般的に使用される形式です。 PHP では、通常、他の言語のデータ構造を使用して実行できる作業を完了するために配列が使用されます。複数の種類のデータを同じ配列に格納できる型言語であり、PHPでは配列の長さに制限がなく、数の増減に応じてデータを格納する配列の容量も自動調整することができます。内部の要素の。
1. 配列を使用してスタックを実装する
スタックはデータ構造の実装形式であり、データの保存には「先入れ後出し」データ構造が使用されます。 PHP では、配列をスタックとして扱い、array_push() と array_pop() の 2 つの関数を使用して、データのプッシュおよびポップ操作を完了します。
-->array_push(): 1 つ以上のユニットを配列の最後にプッシュし (スタックにプッシュし)、新しいグループの長さを返します。
-->array_pop(): 配列の最後のユニットを配列にポップします (スタックからポップします)
2. 配列を使用してキューを実装します
キューはデータ構造の実装形式であり、 " "先入れ先出し" データ構造。 PHP では、array_push() 関数と array_shift() 関数を使用して、配列をスタックとして扱うことでデータ キューの操作を完了できます。
-->array_shift(): 配列の先頭のユニットを配列の外に移動し、削除された要素の値を返します。
-->array_shift(): 配列の先頭に 1 つ以上のユニットを挿入します

以上がこの記事の全内容です、皆様の学習のお役に立てれば幸いですその他の関連コンテンツについては、PHP 中国語 Web サイトをフォローしてください。

関連する推奨事項:

PHP で配列の値を一連の変数に割り当てる方法

PHP背景コメント実装

以上がPHP の配列とデータ構造の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。