ホームページ >バックエンド開発 >PHPチュートリアル >PHP 配列操作 (マージ、分割、追加、検索、削除など)

PHP 配列操作 (マージ、分割、追加、検索、削除など)

高洛峰
高洛峰オリジナル
2016-12-01 09:47:261196ブラウズ

1. 配列を結合する
array_merge() 関数は配列を結合し、結合された配列を返します。結果の配列は、最初の入力配列パラメーターで始まり、後続の配列パラメーターが出現する順序で順次追加されます。その形式は次のとおりです:
コードをコピー コードは次のとおりです:
array array_merge (array array1 array2...,arrayN)

この関数は 1 つ以上の配列のセルをマージし、1 つの配列内の値が追加されます。前の配列。結果の配列を返します。
入力配列に同じ文字列キー名がある場合、キー名の後の値で前の値が上書きされます。ただし、配列に数値キーが含まれている場合、後続の値は元の値を上書きせず、追加されます。
配列のみが指定され、その配列が数値的にインデックス付けされている場合、キー名は連続して再インデックス付けされます。
コードをコピーします。 コードは次のとおりです。
$fruits = array("apple","banana","pear");
$numbered = array("1","2","3) ");
$cards = array_merge($fruits, $numbered);
print_r($cards);
// 出力
// Array ( [0] => リンゴ [1] => バナナ [2] = > pear [ 3] => 1 [4] => 3 )

2. 配列
array_merge_recursive() 関数は、array_merge() と同じです。 2 つ以上の配列を結合する 結合して結合された配列を形成します。 2 つの違いは、入力配列内のキーが結果配列にすでに存在する場合、関数はそれを異なる方法で処理することです。 array_merge() は、以前に存在していたキー/値のペアを上書きし、現在の入力配列のキー/値のペアに置き換えます。一方、array_merge_recursive() は、2 つの値をマージして、元のキーを持つ新しい配列を形成します。配列名。配列を再帰的に追加する配列マージの形式もあります。その形式は次のとおりです:

コードをコピーします コードは次のとおりです:
array array_merge_recursive(array array1,array array2[...,array arrayN])

プログラムの例は次のとおりです:
コードをコピー コードは次のとおりです:
$fruit1 = array( "リンゴ" => "赤", "バナナ" => "黄");
$fruit2 = array("梨" => "黄",​​ "リンゴ" " => "green");
$ result = array_merge_recursive($fruit1, $fruit2);
print_r($result);
// 出力
// Array ( [apple] => Array ( [0] = > 赤 [1] => 緑 ) [バナナ] => 黄色 [洋ナシ] => 黄色 )

これで、キーのリンゴは 2 つの色の値で構成される配列を指します。
3. 配列を接続する
array_combine() 関数は、送信されたキーと対応する値のセットで構成される新しい配列を取得します。その形式は次のとおりです:
コードをコピーします。 コードは次のとおりです:
array array_combine(配列キー、配列値)

2 つの入力配列は同じサイズである必要があり、空にすることはできないことに注意してください。例は次のとおりです
コードをコピーします コードは次のとおりです:
$name = array("apple", "banana", "orange");
$color = array("red", " yellow", "orange") ;
$fruit = array_combine($name, $color);
print_r($fruit);
// 出力
// Array ( [apple] => red [banana] => yellow [orange] => orange )
?>

4. 配列の分割 array_slice()
array_slice() 関数は、キーのオフセットから開始してオフセット+長さの位置で終了する配列の一部を返します。その形式:

コードをコピー コードは次のとおりです:
array array_slice (array array, int offset[,int length])

offset が正の値の場合、配列の先頭からのオフセット位置から分割が開始されます; offset が負の値の場合、配列の末尾からのオフセット位置から分割が開始されます。オプションの長さパラメータを省略した場合、分割はオフセットから開始され、配列の最後の要素まで進みます。長さが指定され、正の場合、配列の先頭からのオフセット + 長さの位置で終了します。逆に、長さが指定されていて負の場合、配列の先頭から count(input_array)-|length| で終了します。例を考えてみましょう:
コードをコピー コードは次のとおりです:
$fruits = array("Apple", "Banana", "Orange", "Pear", "Grape", "Lemon", "Watermelon" ");
$subset = array_slice($fruits, 3);
print_r($subset);
// 出力
// Array ( [0] => 梨 [1] => ブドウ [2] => ; レモン [ 3] => スイカ )
?>

次に、負の長さを使用します。
コードをコピーします。 コードは次のとおりです。
$fruits = array("リンゴ"、"バナナ"、"オレンジ"、"梨"、"ブドウ"、"レモン"、"スイカ");
$subset = array_slice($fruits, 2, -2); print_r($subset);
// 出力
// Array ( [0] => Orange [1] => Pear [2] => Grape )
?> 配列 array_splice() を結合します。
array_splice() 関数は、配列内の offset から始まり offset+length で終わるすべての要素を削除し、削除された要素を配列の形式で返します。その形式は次のとおりです:
コードをコピー コードは次のとおりです:
array array_splice (array array, int offset[,length[,array replace]])

offset が正の値の場合、結合はオフセット位置から開始されます。配列の先頭、オフセット 負の場合、結合は配列の末尾からのオフセットで開始されます。オプションの長さパラメータを省略した場合、オフセット位置から始まり配列の末尾で終わるすべての要素が削除されます。長さが指定されており、それが正の場合、結合は配列の先頭からのオフセット + 長さの位置で終了します。逆に、length が指定されていて負の場合、共用体は配列の先頭から count(input_array)-length だけ終了します。例は次のとおりです。
コードをコピーします コードは次のとおりです:
$fruits = array("Apple", "Banana", "Orange", "Pear", "Grape", "Lemon" , "スイカ");
$subset = array_splice($fruits);
print_r($subset);
// 配列 ( [0] => ] => バナナ [2] => オレンジ [3] => 梨 )
// 配列 ( [0] => ブドウ [1] => スイカ )
?> ;

はオプションで使用できます。 replace パラメータは、ターゲット部分を置き換える配列を指定します。例は次のとおりです。
コードをコピーします コードは次のとおりです:
$fruits = array("Apple", "Banana", "Orange", "Pear", "Grape", "Lemon" , "スイカ");
$subset = array_splice($fruits, 2, -1, array("Green Apple", "Red Apple"));
print_r($subset); / 出力
// 配列 ( [0] => リンゴ [1] => バナナ [2] => 緑のリンゴ [3] => 赤いリンゴ [4] => スイカ )
// 配列 ( [0] => オレンジ [1] => 梨 [3] => レモン )

この関数の使用方法はプログラムから確認できます。

6. 配列の交差 array_intersect()
array_intersect() 関数は、保持されたキーを持つ配列を返します。この配列は、最初の配列に出現し、他のすべての入力配列に出現する値のみで構成されます。その形式は次のとおりです。

コードをコピーします。 コードは次のとおりです。
array array_intersect(array array1,array array2[,arrayN...])

次の例は、$fruit1 配列に表示される項目を返し、 $fruit2 と $fruit3 にも表示されます すべてのフルーツ:
コードをコピー コードは次のとおりです:
$fruit1 = array("Apple","Banana","Orange"); "梨","リンゴ","ブドウ");
$fruit3 = array("スイカ","オレンジ","リンゴ"); ($intersection);
// 出力
// Array ( [0] => Apple )
?>

2 つの要素が等しく、同じデータ型を持つ場合にのみ、array_intersect() 関数はそれらを次のようにみなします。同じであること。

7. 連想配列の交差 array_intersect_assoc()
関数 array_intersect_assoc() は、比較の際に配列のキーも考慮する点を除いて、基本的に array_intersect() と同じです。したがって、最初の配列に出現し、他のすべての入力配列にも出現するキーと値のペアのみが結果配列に返されます。
形式は次のとおりです:

コードをコピーします コードは次のとおりです:
array array_intersect_assoc(array array1,array array2[,arrayN...])

次の例は、$fruit1 配列に表示されるものと、さらに表示されるものを返します。 $fruit2 と $fruit3 すべてのキーと値のペア:
コードをコピー コードは次のとおりです:
$fruit1 = array("red"=>"Apple"," yellow"=>"Banana" ","オレンジ"=>"オレンジ");
$fruit2 = array("黄"=>"梨","赤"=>"リンゴ","紫"=>"ブドウ");
$fruit3 = array("緑"=>"スイカ","オレンジ"=>"オレンジ","赤"=>"リンゴ");$intersection = array_intersect_assoc($fruit1, $fruit2, $fruit3);
print_r($intersection);
// Array ( [red] => Apple )

8. array_diff() を設定する
関数 array_diff() は、最初の配列に現れるが、他の入力配列には現れない値を返します。この関数は array_intersect() の逆です。
コードをコピーします コードは次のとおりです:
array array_diff(array array1,array array2[,arrayN...])

例は次のとおりです:
コードをコピー コードは次のとおりです:
$フルーツ1 = 配列("リンゴ","バナナ" ,"オレンジ");
$フルーツ2 = 配列("梨","リンゴ","ブドウ");
$フルーツ3 = 配列("スイカ","オレンジ", "Apple");
$intersection = array_diff( $fruit1, $fruit2, $fruit3);
// 出力
// Array ( [1] => バナナ )
?
9. 連想配列のarray_diff_assoc()の違い

関数array_diff_assoc()は、比較する際に配列のキーも考慮することを除いて、基本的にarray_diff()と同じです。したがって、最初の配列に現れ、他の入力配列には現れないキーと値のペアのみが結果配列に返されます。その形式は次のとおりです。
コードをコピーします。 コードは次のとおりです。
array array_diff_assoc(array array1,array array2[,arrayN...])

次の例では、[ yellow] => Banana のみが返されます。これは、この特別なキーであるためです。 /value ペアは $fruit1 に表示されますが、$fruit2 または $fruit3 には存在しません。
コードをコピーします。 コードは次のとおりです。
$fruit1 = array("red"=>"Apple"," yellow"=>"Banana","orange"=>"Orange" );
$ フルーツ 2 = 配列("黄色"=>"梨","赤"=>"リンゴ","紫"=>"ブドウ"); ;"スイカ" ,"オレンジ"=>"オレンジ","赤"=>"リンゴ");
$intersection = array_diff_assoc($fruit1, $fruit2, $fruit3); // 出力
// Array ( [ yellow] => Banana )
?>

配列を使用する場合、多くの場合、配列を走査する必要があります。多くの場合、配列を反復処理して個々のキーまたは値を取得する (またはキーと値の両方を取得する) 必要があるため、当然のことながら、PHP はこの目的のためにいくつかの関数を提供します。多くの関数は、現在のポインター位置にあるキーまたは値を取得するだけでなく、ポインターを次の適切な位置に移動するという 2 つのタスクを実行します。

10. 現在の配列キーを取得します key()
key() 関数は、input_array の現在のポインター位置にあるキーを返します。その形式は次のとおりです:
コードをコピーします。 コードは次のとおりです:
混合キー(配列配列)

次の例は、配列を反復処理してポインターを移動することにより、$fruits 配列のキーを出力します:
コードをコピーする コードは次のとおりです:
$fruits = array(" apple"=>"red", "banana"=>" yellow");
while ($key = key($fruits)) {
printf("%s
", $key) ;
next($fruits);
}
// リンゴ
// バナナ

key() が呼び出されるたびにポインタが移動するわけではないことに注意してください。この目的のために、 next() 関数を使用する必要があります。この関数の唯一の機能は、ポインターを進めるタスクを完了することです。

11. 現在の配列値を取得する current()
current() 関数は、配列内の現在のポインター位置にある配列値を返します。その形式は次のとおりです:
コードのコピー コードは次のとおりです:
mixed current(array array)

今回は配列の値を取得したいとします:
コードのコピー コードは次のとおりです:
$fruits = array("リンゴ"=>"赤", "バナナ"=>"黄");
while ($fruit = current($fruits)) {
printf("%s
;", $fruit);
next( $fruits);
}
// 赤
// 黄

12. 現在の配列のキーと値を取得します each()
each() 関数は現在のキーと値のペアを返しますinput_array の値を取得し、ポインタを 1 位置進めます。その形式は次のとおりです:
コードのコピー コードは次のとおりです:
array each(array array)

返された配列には 4 つのキーが含まれ、キー 0 とキーにはキー名が含まれ、キー 1 と値には対応するデータが含まれます。 each() が実行される前にポインタが配列の末尾にある場合は、false が返されます。
コードをコピーする コードは次のとおりです。
$fruits = array("apple", "banana", "orange", "pear");
print_r ( each($fruits) ); ] => リンゴ [値] => 0 [キー] =>each() は、配列を反復処理するために list() と組み合わせてよく使用されます。この例は前の例と似ていますが、配列全体がループで出力されます:
コードをコピー コードは次のとおりです:
$fruits = array("apple", "banana", "orange", "pear") ;
reset($fruits);
while (list($key, $val) = each($fruits))
{
echo "$key => $val
"; 0 => リンゴ
// 1 => バナナ
// 2 => オレンジ
// 3 => 梨

配列を別の配列に代入すると、元の配列ポインタがリセットされるため、上記の例では、ループしています $fruits を内部的に別の変数に代入すると、無限ループが発生します。
これで配列の走査が完了しました。

配列要素の検索、フィルタリング、検索は、配列操作の一般的な機能です。関連する機能をいくつか紹介します。

13. in_array() 関数
in_array() 関数は、配列内の特定の値を検索し、値が見つかった場合は true を返し、それ以外の場合は false を返します。その形式は次のとおりです:
コードのコピー コードは次のとおりです:
boolean in_array(mixed needle,array haystack[,boolean strict]);

変数 apple がすでに配列内にあるかどうかを確認するには、次の例を見てください。存在する場合は、情報を出力します :
コードをコピー コードは次のとおりです。
$fruit = "apple";
$fruits = array("apple","banana","orange","pear");
if( in_array($fruit,$fruits) )
echo "$fruit はすでに配列内にあります";

3 番目のパラメータはオプションであり、検索時に in_array() に型を強制します。


14. array_key_exists() 関数
指定されたキーが配列内に見つかった場合、array_key_exists() 関数は true を返し、それ以外の場合は false を返します。その形式は次のとおりです:
コードのコピー コードは次のとおりです:
boolean array_key_exists(mixed key,array array);

次の例では、配列キーでリンゴを検索し、見つかった場合は果物の色を表示します。出力されます:
コードをコピー コードは次のとおりです:
$fruit["apple"] = "red";
$fruit["pear"] = "green"; ;
if(array_key_exists("apple", $fruit )){
printf("apple's color is %s",$fruit["apple"]);
//apple の色は赤です

15. ) function
array_search() 関数は配列内を検索します。見つかった場合は対応するキーを返し、それ以外の場合は false を返す指定された値です。その形式は次のとおりです:
コードのコピー コードは次のとおりです:
mixed array_search(mixed needle,array haystack[,boolean strict])

次の例では、$fruits で特定の日付 (12 月 7 日) を検索し、見つかった場合は、対応する州関連情報を返します:
コードをコピー コードは次のとおりです:
$fruits["banana"] = " yellow"; ]="green";
$founded = array_search("green", $fruits);
if($founded)
printf("%s は %s に設立されました。",$founded, $fruits[$founded]) ;
//watermelon は green に基づいて設立されました。

16. array_keys() 関数
array_keys() 関数は、検索された配列で見つかったすべてのキーを含む配列を返します。その形式は次のとおりです:

コードのコピー コードは次のとおりです:
array array_keys(array array[,mixed search_value])

オプションのパラメーター search_value が含まれている場合、値に一致するキーのみが返されます。次の例では、$fruit 配列内にあるすべての配列を出力します。
コードをコピーする コードは次のとおりです。 $fruits[ "スイカ"]="緑";
$keys = array_keys($fruits);
//Array ( [0] => リンゴ [1] => バナナ [2] ] => ; スイカ )

17. array_values() 関数
array_values() 関数は、配列内のすべての値を返し、返された配列に数値インデックスを自動的に提供します。その形式は次のとおりです:
コードのコピー コードは次のとおりです:
array array_values(array array)

次の例は、$fruits で見つかった各要素の値を取得します:
コードのコピー コードは次のとおりです:
$果物["リンゴ"] = "赤";
$フルーツ["スイカ"] = "緑"; print_r($values);
//配列 ( [0] => 赤 [1] => 黄 [2] => 緑 )

場合によっては、配列を拡張したり、配列の一部を削除したりする必要があります。PHP には、配列を拡張および縮小するための関数がいくつか用意されています。これらの関数は、さまざまなキュー実装 (FIFO、LIFO) をエミュレートしたいプログラマに便利です。名前が示すように、これらの関数の関数名 (プッシュ、ポップ、シフト、およびシフト解除) は、その機能を明確に反映しています。
追記: 従来のキューは、要素の削除と要素の追加の順序が同じであり、先入れ先出し (FIFO) と呼ばれます。対照的に、スタックは追加されたときと逆の順序で要素が削除される別のデータ構造です。これは後入れ先出し (LIFO) になります。


18. 配列の先頭に要素を追加する
array_unshift() 関数は、配列の先頭に要素を追加します。既存のすべての数値キーは、配列内の新しい位置を反映するように変更されますが、関連するキーは影響を受けません。その形式は次のとおりです。
コードのコピー コードは次のとおりです:
int array_unshift(array 配列,混合変数[,混合変数])

次の例では、$fruits 配列の前に 2 種類のフルーツを追加します。コード コードは次のとおりです:
$fruits = array("apple","banana");
array_unshift($fruits,"orange","pear")
// $fruits = array("orange","pear) ","apple","banana") ;

19. 配列の末尾に要素を追加します
array_push()関数の戻り値は、データをプッシュした後の配列の要素数であるint型になります。複数の変数をパラメータとしてこの関数に渡し、同時に複数の変数を配列にプッシュできます。その形式は次のとおりです:
コードのコピー コードは次のとおりです:
(配列 配列,混合変数 [,混合変数...])

次の例では、さらに 2 つのフルーツを $fruits 配列に追加します:
コードのコピー コードは次のとおりです。次のように:
$fruits = array("apple","banana");
array_push($fruits,"orange","pear")
//$fruits = array("apple","banana","orange) ","pear ")

20. 配列の先頭から値を削除
array_shift() 関数は、配列内で見つかった要素を削除して返します。その結果、数値キーを使用している場合は、対応するすべての値が下にシフトされますが、連想キーを使用する配列は影響を受けません。その形式は次のとおりです。
コードをコピー コードは次のとおりです:
mixed array_shift(array array)

次の例は、$fruits 配列の最初の要素 apple を削除します:
コードをコピー コードは次のとおりです:
$fruits = array( "リンゴ", "バナナ","オレンジ","梨");
$fruit = array_shift($fruits);
// $fruits = array("バナナ","オレンジ","梨")
// $fruit = " apple";

21. 配列の末尾から要素を削除する
array_pop() 関数は、配列の最後の要素を削除して返します。その形式は次のとおりです:
コードのコピー コードは次のとおりです:
mixed array_pop(aray target_array)

次の例は $states 配列から最後の状態を削除します:
コードのコピー コードは次のとおりです:
$fruits = array ("リンゴ", "バナナ","オレンジ");
$fruit = array_pop($fruits)
//$fruits = array("リンゴ","バナナ","オレンジ"); //$フルーツ = "梨";

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