print_r($result);
//出力
// Array ( [apple] => Array ( [0] => red [1] => green ) [banana] => yellow [pear] => yellow )
?>
これで、キーのリンゴは、色の値の 2 つのインデックス付き配列で構成される配列を指します。
3. アレイを接続する
array_combine() 関数は、送信されたキーと対応する値のセットで構成される新しい配列を取得します。その形式は次のとおりです:
配列 array_combine(配列キー,配列値)
2 つの入力配列は同じサイズである必要があり、空にすることはできないことに注意してください。例は次のとおりです
コードは次のとおりです |
コードをコピー |
$name = array("リンゴ", "バナナ", "オレンジ");
$color = array("赤", "黄", "オレンジ");
$fruit = array_combine($name, $color);
print_r($フルーツ);
//出力
// 配列 ( [リンゴ] => 赤 [バナナ] => 黄 [オレンジ] => オレンジ )
?>
|
4. 配列の分割 array_slice()
array_slice() 関数は、キー オフセットから始まりオフセット + 長さで終わる配列の一部を返します。その形式:
array array_slice (配列 array, int offset[,int length])
offset が正の値の場合は配列の先頭からのオフセット位置から分割が開始され、offset が負の値の場合は配列の末尾からのオフセット位置から分割が開始されます。オプションの長さパラメータを省略した場合、分割はオフセットから開始され、配列の最後の要素まで進みます。長さが指定され、正の場合、配列の先頭からのオフセット + 長さの位置で終了します。逆に、長さが指定されていて負の場合、配列の先頭から count(input_array)-|length| で終了します。例を考えてみましょう:
コードは次のとおりです |
コードをコピー |
$fruits = array("リンゴ", "バナナ", "オレンジ", "梨", "ブドウ", "レモン", "スイカ");
$subset = array_slice($fruits, 3);
print_r($subset);
//出力
// 配列 ( [0] => 梨 [1] => ブドウ [2] => レモン [3] => スイカ )
?>
|
次に、下側の負の長さを使用します。
コードは次のとおりです |
コードをコピー |
$fruits = array("リンゴ", "バナナ", "オレンジ", "梨", "ブドウ", "レモン", "スイカ");
$subset = array_slice($fruits, 2, -2);
print_r($subset);
//出力
// 配列 ( [0] => オレンジ [1] => 梨 [2] => ブドウ )
?>
|
5. 配列のスプライス array_splice()
array_splice() 関数は、配列内の offset から始まり offset+length で終わるすべての要素を削除し、削除された要素を配列の形式で返します。その形式は次のとおりです:
array array_splice ( array array , int offset[,length[,array replace]])
offset が正の値の場合、配列の先頭からのオフセット位置から結合が開始されます。 offset が負の値の場合、配列の末尾からのオフセット位置から結合が開始されます。オプションの長さパラメータを省略した場合、オフセット位置から始まり配列の末尾で終わるすべての要素が削除されます。長さが指定されており、それが正の場合、結合は配列の先頭からのオフセット + 長さの位置で終了します。逆に、length が指定されていて負の場合、共用体は配列の先頭から count(input_array)-length だけ終了します。例は次のとおりです:
コードは次のとおりです |
コードをコピー |
$fruits = array("リンゴ", "バナナ", "オレンジ", "梨", "ブドウ", "レモン", "スイカ");
$subset = array_splice($fruits, 4);
print_r($fruits);
print_r($subset);
//出力
// 配列 ( [0] => リンゴ [1] => バナナ [2] => オレンジ [3] => 梨 )
// 配列 ( [0] => ブドウ [1] => レモン [2] => スイカ )
?>
|
オプションのパラメータ置換を使用して、ターゲット部分を置換する配列を指定できます。例は次のとおりです:
コードは次のとおりです |
コードをコピー |
$fruits = array("リンゴ", "バナナ", "オレンジ", "梨", "ブドウ", "レモン", "スイカ");
$subset = array_splice($fruits, 2, -1, array("Green Apple", "Red Apple"));
print_r($fruits);
print_r($subset);
//出力
// 配列 ( [0] => リンゴ [1] => バナナ [2] => 緑のリンゴ [3] => 赤いリンゴ [4] => スイカ )
// 配列 ( [0] => オレンジ [1] => 梨 [2] => ブドウ [3] => レモン )
?>
|
この機能の使用方法はプログラムから明確にわかります。
6. 配列の交差 array_intersect()
array_intersect() 関数は、最初の配列に出現し、他のすべての入力配列に出現する値のみで構成されるキー保存配列を返します。その形式は次のとおりです:
配列 array_intersect(配列 配列1,配列 配列2[,配列N…])
次の例は、$fruit1 配列に表示され、$fruit2 と $fruit3 にも表示されるすべてのフルーツを返します。
コードは次のとおりです
| コードをコピー
|
$fruit1 = array("アップル","バナナ","オレンジ");
$fruit2 = array("梨","リンゴ","ブドウ");
$fruit3 = array("スイカ","オレンジ","リンゴ");
$intersection = array_intersect($fruit1, $fruit2, $fruit3);
print_r($intersection);
//出力
// 配列 ( [0] => Apple )
?>
array_intersect() 関数は、2 つの要素が等しく、同じデータ型を持つ場合にのみ、それらの要素が同じであるとみなします。
7. 連想配列の交差 array_intersect_assoc()
関数 array_intersect_assoc() は、比較の際に配列のキーも考慮する点を除いて、基本的に array_intersect() と同じです。したがって、最初の配列に出現し、他のすべての入力配列にも出現するキーと値のペアのみが結果配列に返されます。
フォームは次のとおりです:
array array_intersect_assoc(array array1,array array2[,arrayN…])
次の例は、$fruit1 配列に表示され、$fruit2 と $fruit3 にも表示されるすべてのキーと値のペアを返します。
コードは次のとおりです
| コードをコピー
|
$fruit1 = array("赤"=>"リンゴ","黄"=>"バナナ","オレンジ"=>"オレンジ");
$fruit2 = array("黄色"=>"梨","赤"=>"リンゴ","紫"=>"ブドウ");
$fruit3 = array("green"=>"スイカ","orange"=>"オレンジ","red"=>"リンゴ");
$intersection = array_intersect_assoc($fruit1, $fruit2, $fruit3);
print_r($intersection);
//出力
// 配列 ( [赤] => Apple )
?>
8. 配列array_diff()の違い
関数 array_diff() は、最初の配列に表示されるが、他の入力配列には表示されない値を返します。この関数は array_intersect() の逆です。
配列 array_diff(配列 配列1,配列 配列2[,配列N…])
例は次のとおりです:
コードは次のとおりです
| コードをコピー
|
$fruit1 = array("アップル","バナナ","オレンジ");
$fruit2 = array("梨","リンゴ","ブドウ");
$fruit3 = array("スイカ","オレンジ","リンゴ");
$intersection = array_diff($fruit1, $fruit2, $fruit3);
print_r($intersection);
//出力
// 配列 ( [1] => バナナ )
?>
9. 連想配列array_diff_assoc()の違い
関数 array_diff_assoc() は基本的に array_diff() と同じですが、比較時に配列のキーも考慮される点が異なります。したがって、最初の配列に現れ、他の入力配列には現れないキーと値のペアのみが結果配列に返されます。その形式は次のとおりです:
配列 array_diff_assoc(配列 配列1,配列 配列2[,配列N…])
次の例では、[ yellow ] => Banana のみが返されます。これは、この特別なキーと値のペアが $fruit1 に表示されますが、$fruit2 と $fruit3 には存在しないためです。
コードは次のとおりです
| コードをコピー
|
$fruit1 = array("赤"=>"リンゴ","黄"=>"バナナ","オレンジ"=>"オレンジ");
$fruit2 = array("黄色"=>"梨","赤"=>"リンゴ","紫"=>"ブドウ");
$fruit3 = array("green"=>"スイカ","orange"=>"オレンジ","red"=>"リンゴ");
$intersection = array_diff_assoc($fruit1, $fruit2, $fruit3);
print_r($intersection);
//出力
// 配列 ( [黄色] => バナナ )
?>
配列を使用する場合、多くの場合、配列を走査する必要があります。多くの場合、配列を反復処理して個々のキーまたは値を取得する (またはキーと値の両方を取得する) 必要があるため、当然のことながら、PHP はこの目的のためにいくつかの関数を提供します。多くの関数は、現在のポインター位置にあるキーまたは値を取得するだけでなく、ポインターを次の適切な位置に移動するという 2 つのタスクを実行します。
10. 現在の配列キー key() を取得します
key() 関数は、input_array 内の現在のポインター位置にあるキーを返します。その形式は次のとおりです:
混合キー(配列配列)
次の例では、配列を反復処理してポインタを移動することにより、$fruits 配列のキーを出力します。
コードは次のとおりです
| コードをコピー
|
$fruits = array("リンゴ"=>"赤", "バナナ"=>"黄");
while ($key = key($fruits)) {
printf("%s ", $key);
次($フルーツ);
}
// リンゴ
// バナナ
|
key() が呼び出されるたびにポインタは移動しないことに注意してください。この目的のために、 next() 関数を使用する必要があります。この関数の唯一の機能は、ポインターを進めるタスクを完了することです。
11. 現在の配列値を取得します()
current() 関数は、配列内の現在のポインター位置にある配列値を返します。その形式は次のとおりです:
混合電流(アレイアレイ)
今回は配列値を取得したいと考えて、前の例を変更してみましょう。
コードは次のとおりです
コードをコピー |
|
$fruits = array("リンゴ"=>"赤", "バナナ"=>"黄");
while ($fruit = current($fruits)) {
printf("%s ", $fruit);
次($フルーツ);
}
// 赤
// 黄色
|
12. 現在の配列のキーと値を取得します()
each() 関数は、input_array の現在のキーと値のペアを返し、ポインターを 1 位置進めます。その形式は次のとおりです:
配列それぞれ(配列配列)
返された配列には 4 つのキーが含まれ、キー 0 とキーにはキー名が含まれ、キー 1 と値には対応するデータが含まれます。 each() が実行される前にポインタが配列の末尾にある場合は、false が返されます。
コードは次のとおりです
コードをコピー |
|
$fruits = array("リンゴ", "バナナ", "オレンジ", "梨");
print_r (それぞれ($fruits) );
// Array ( [1] => apple [value] => apple [0] => 0 [key] => 0 )
|
each() は、配列を反復処理するために list() と組み合わせてよく使用されます。この例は前の例と似ていますが、配列全体がループで出力されます。
コードは次のとおりです
コードをコピー
|
| $fruits = array("リンゴ", "バナナ", "オレンジ", "梨");
リセット($フルーツ);
while (list($key, $val) = each($fruits))
{
echo "$key => $val ";
}
// 0 => リンゴ
// 1 => バナナ
// 2 => オレンジ
// 3 => ナシ
ある配列を別の配列に代入すると元の配列ポインタがリセットされるため、上記の例で$fruitsをループ内で別の変数に代入すると無限ループが発生します。
これで配列の走査が完了しました。
配列要素の検索、フィルタリング、および検索は、配列操作の一般的な機能です。関連する機能をいくつか紹介します。
13. in_array() 関数
in_array() 関数は、配列内の特定の値を検索し、値が見つかった場合は true を返し、それ以外の場合は false を返します。その形式は次のとおりです:
boolean in_array(混合針,配列干し草[,ブール値厳密]);
変数 apple がすでに配列内にあるかどうかを確認するには、次の例を見てください。存在する場合は、情報を出力します。
コードは次のとおりです
| コードをコピー
|
$フルーツ = "リンゴ";
$fruits = array("リンゴ","バナナ","オレンジ","梨");
if( in_array($fruit,$fruits) )
echo "$fruit はすでに配列内にあります";
|
3 番目のパラメータはオプションで、検索時に in_array() に型を強制的に考慮させます。
14. array_key_exists() 関数
指定されたキーが配列内で見つかった場合、関数 array_key_exists() は true を返し、それ以外の場合は false を返します。その形式は次のとおりです:
boolean array_key_exists(混合キー,配列配列);
次の例では、配列キーでリンゴを検索し、見つかった場合は、この果物の色を出力します。
コードは次のとおりです
コードをコピー
|
| $fruit["apple"] = "赤";
$fruit["バナナ"] = "黄色";
$fruit["洋ナシ"] = "緑";
if(array_key_exists("apple", $fruit)){
printf("リンゴの色は %s",$fruit["リンゴ"]);
}
//リンゴの色は赤です
| 15.array_search()関数
array_search() 関数は、配列内の指定された値を検索し、見つかった場合は対応するキーを返し、それ以外の場合は false を返します。その形式は次のとおりです:
混合配列検索(混合針、配列干し草[,ブール値厳密])
次の例では、$fruits で特定の日付 (12 月 7 日) を検索し、見つかった場合は、対応する州の関連情報を返します。
コードは次のとおりです
コードをコピー
|
$fruits["リンゴ"] = "赤"; |
$fruits["バナナ"] = "黄色";
$fruits["スイカ"]="グリーン";
$founded = array_search("green", $fruits);
if($founded)
printf("%s は %s に設立されました。",$founded, $fruits[$founded]);
//スイカは緑の上に設立されました。
|
16. array_keys() 関数
array_keys() 関数は、検索された配列内で見つかったすべてのキーを含む配列を返します。その形式は次のとおりです:
配列 array_keys(配列 array[,混合検索値])
オプションのパラメーター search_value を含めると、その値に一致するキーのみが返されます。次の例では、$fruit 配列内で見つかったすべての配列を出力します:
コードは次のとおりです
コードをコピー
|
$fruits["リンゴ"] = "赤"; |
$fruits["バナナ"] = "黄色";
$fruits["スイカ"]="グリーン";
$keys = array_keys($fruits);
print_r($keys);
//配列 ( [0] => リンゴ [1] => バナナ [2] => スイカ )
17. array_values() 関数
array_values() 関数は、配列内のすべての値を返し、返された配列に数値インデックスを自動的に提供します。その形式は次のとおりです:
配列 array_values(配列 配列)
次の例は、$fruits にある各要素の値を取得します。
コードは次のとおりです
| コードをコピー
|
$fruits["リンゴ"] = "赤";
$fruits["バナナ"] = "黄色";
$fruits["スイカ"]="グリーン";
$values = array_values($fruits);
print_r($values);
//配列 ( [0] => 赤 [1] => 黄 [2] => 緑 )
|
配列を拡張したり、配列の一部を削除したりする必要がある場合があります。PHP には、配列を拡張および縮小するための関数がいくつか用意されています。これらの関数は、さまざまなキュー実装 (FIFO、LIFO) をエミュレートしたいプログラマに便利です。名前が示すように、これらの関数の関数名 (プッシュ、ポップ、シフト、およびシフト解除) は、その機能を明確に反映しています。
追記: 従来のキューは、要素の削除と要素の追加の順序が同じであり、先入れ先出し (FIFO) と呼ばれます。対照的に、スタックは追加されたときと逆の順序で要素が削除される別のデータ構造です。これは後入れ先出し (LIFO) になります。
18. 配列の先頭に要素を追加します
array_unshift() 関数は配列の先頭に要素を追加します。既存のすべての数値キーは、配列内の新しい位置を反映するように変更されますが、関連するキーは影響を受けません。その形式は次のとおりです:
int array_unshift(配列 配列,混合変数[,混合変数])
次の例では、$fruits 配列の前に 2 つのフルーツを追加します。
コードは次のとおりです
コードをコピー |
|
$fruits = array("リンゴ","バナナ");
array_unshift($fruits,"オレンジ","洋ナシ")
// $fruits = array("オレンジ","梨","リンゴ","バナナ");
| 19. 配列の末尾に要素を追加します
array_push() 関数の戻り値は int 型で、データをプッシュした後の配列内の要素の数です。複数の変数をパラメーターとしてこの関数に渡し、複数の変数を同時に配列にプッシュできます。 。その形式は次のとおりです:
(配列 配列,混合変数 [,混合変数...])
次の例では、さらに 2 つのフルーツを $fruits 配列に追加します。
コードは次のとおりです
コードをコピー
|
$fruits = array("リンゴ","バナナ"); |
array_push($fruits,"オレンジ","洋ナシ")
//$fruits = array("リンゴ","バナナ","オレンジ","梨")
20. 配列ヘッダーから値を削除
|
array_shift() 関数は、配列内で見つかった要素を削除して返します。その結果、数値キーが使用されている場合、対応するすべての値は下にシフトされますが、連想キーを使用する配列は影響を受けません。その形は
混合 array_shift(配列 配列)
次の例では、$fruits 配列の最初の要素 apple を削除します。
コードは次のとおりです
コードをコピー
|
$fruits = array("リンゴ","バナナ","オレンジ","梨"); |
$fruit = array_shift($fruits);
// $fruits = array("バナナ","オレンジ","梨")
// $fruit = "リンゴ" ;
21. 从数组尾删除元素
array_pop()函数删除并返回数组的最后一个元素。其形式为:
mixed array_pop(aray target_array);
下面的例子从$states数组删除了最后的一个州:
代码如下 |
复制代码 |
$fruits = array("apple","banana","orange","pear");
$fruit = array_pop($fruits);
//$fruits = array("apple","banana","orange");
//$fruit = "pear";
|
然后上面一些知识我们总结成一个函数
//声明方法一、直接使用array()函数声明数组,下标与数组元素见使用=>连接,下标默认0开始
代码如下 |
复制代码 |
//result: Array([0]=>asp[1]=>php[2]=>jsp)
//指定下标
"asp","2"=>"php","3"=>"jsp");
print_r($array);
echo"
";
echo $array[1];
echo $array[2];
echo $array[3];
?>
/*
result:
Array([0]=>asp[1]=>php[2]=>jsp)
aspphpjsp
*/
//声明方法二、直接为数组赋值声明数组
//result:Array([0]=>asp[1]=>php[2]=>jsp)
//数组的类型如下;
asp[1]=>php[2]=>jsp)
?>
1,"second"=>2,"third"=>3);
echo $newarray["second"];
$newarray["third"]=8;
echo $newarray["third"];
?>
//result:28
一个数组的元素是变量时,这个数组就是一维数组;
一个数组的元素如果是一个一维数组,这个数组就是二维数组;
二维数组,exp:
$str=array(
"书籍"=>array("文学","历史","地理"),
"体育"=>array("m"=>"足球","n"=>"篮球")
);
print_r($str);
|
配列関数の包括的なコレクション
array() は配列を作成します。
array_change_key_case() は、キーがすべて大文字または小文字である配列を返します。
array_chunk() は、配列を新しい配列チャンクに分割します。
array_combine() は 2 つの配列を結合して新しい配列を作成します。
array_count_values() は、配列内のすべての値の出現数をカウントするために使用されます。
array_diff() は、2 つの配列の差分の配列を返します。
array_diff_assoc() は、キー名とキー値を比較し、2 つの配列の差分配列を返します。
array_diff_key() はキー名を比較し、2 つの配列間の差異の配列を返します。
array_diff_uassoc() は、ユーザー提供のコールバック関数を使用してインデックス チェックを実行することにより、配列の差分を計算します。
array_diff_ukey() は、コールバック関数を使用してキー名を比較し、配列の差分を計算します。
array_fill() は、配列に指定された値を入力します。
array_filter() は、コールバック関数を使用して配列内の要素をフィルターします。
array_flip() は配列内のキーと値を交換します。
array_intersect() は配列の共通部分を計算します。
array_intersect_assoc() は、キー名とキー値を比較し、2 つの配列の交差配列を返します。
array_intersect_key() キー名の比較を使用して配列の共通部分を計算します。
array_intersect_uassoc() は、インデックス チェックを使用して配列の交差を計算し、コールバック関数を使用してインデックスを比較します。
array_intersect_ukey() は、コールバック関数を使用してキー名を比較し、配列の共通部分を計算します。
array_key_exists() は、指定されたキー名またはインデックスが配列内に存在するかどうかを確認します。
array_keys() は配列内のすべてのキーを返します。
array_map() は、指定された配列のセルにコールバック関数を適用します。
array_merge() 1 つ以上の配列を 1 つの配列にマージします。
array_merge_recursive() 1 つ以上の配列を再帰的に結合します。
array_multisort() 複数の配列または多次元配列をソートします。
array_pad() は、指定された長さまで配列に値を埋め込みます。
array_pop() は、配列の最後の要素をポップ (ポップ) します。
array_product() は、配列内のすべての値の積を計算します。
array_push() は、1 つ以上のセル (要素) を配列の最後にプッシュします (プッシュ)。
array_rand() は、配列から 1 つ以上の要素をランダムに選択して返します。
array_reduce() はコールバック関数を使用して、配列を単一の値に繰り返し削減します。
array_reverse() は、元の配列内の要素の順序を逆にし、新しい配列を作成して返します。
array_search() は、配列で指定された値を検索し、成功した場合は対応するキーを返します。
array_shift() は、配列内の最初の要素を削除し、削除された要素の値を返します。
array_slice() は、条件に基づいて配列から値のセグメントを削除し、それを返します。
array_splice() は、配列の一部を削除し、別の値に置き換えます。
array_sum() は、配列内のすべての値の合計を計算します。
array_udiff() はコールバック関数を使用してデータを比較し、配列の差分を計算します。
array_udiff_assoc() は、インデックス チェックを使用して配列の差分を計算し、コールバック関数を使用してデータを比較します。
array_udiff_uassoc() は、コールバック関数を使用してデータとインデックスを比較し、インデックスをチェックして配列の差分を計算します。
array_uintersect() は配列の共通部分を計算し、コールバック関数を使用してデータを比較します。
array_uintersect_assoc() は、インデックス チェックを使用して配列の交差を計算し、コールバック関数を使用してデータを比較します。
array_uintersect_uassoc() は、コールバック関数を使用してデータとインデックスを比較し、インデックス チェックで配列の交差を計算します。
array_unique() は配列から重複した値を削除します。
array_unshift() 配列の先頭に 1 つ以上の要素を挿入します。
array_values() は配列内のすべての値を返します。
array_walk() は、配列の各メンバーにユーザー関数を適用します。
array_walk_recursive() は、ユーザー関数を配列の各メンバーに再帰的に適用します。
arsort() は配列を逆順にソートし、インデックス関係を維持します。
asort() は配列をソートし、インデックス関係を維持します。
Compact() は、変数名とその値の配列を作成します。
count() は、配列内の要素の数またはオブジェクト内の属性の数をカウントします。
current() は配列内の現在の要素を返します。
each() は、配列内の現在のキーと値のペアを返し、配列ポインターを 1 ステップ先に移動します。
end() は、配列の内部ポインタを最後の要素に設定します。
extract() は、変数を配列から現在のシンボル テーブルにインポートします。
in_array() は、指定された値が配列内に存在するかどうかを確認します。
key() は連想配列からキー名を取得します。
krsort() は、配列をキー名によって逆順にソートします。
ksort() は配列をキー名でソートします。
list() は、配列内の値をいくつかの変数に割り当てます。
natcasesort() は、「自然ソート」アルゴリズムを使用して、大文字と小文字を区別しない方法で配列をソートします。
natsort() は、「自然ソート」アルゴリズムを使用して配列をソートします。
next() は、配列内の内部ポインタを 1 つ前に移動します。 pos() current() のエイリアス。
prev() は、配列の内部ポインタを 1 ビットロールバックします。
range() は、指定された範囲内の要素を含む配列を作成します。
reset() は、配列の内部ポインタを最初の要素に設定します。
rsort() は配列を逆順にソートします。
shuffle() は、配列内の要素をランダムな順序で再配置します。
sizeof() count() のエイリアス。
sort() は配列をソートします。
uasort() は、ユーザー定義の比較関数を使用して配列内の値を並べ替え、インデックスの関連付けを維持します。
uksort() は、ユーザー定義の比較関数を使用して配列内のキーを並べ替えます。
usort() は、ユーザー定義の比較関数を使用して配列内の値を並べ替えます
|
http://www.bkjia.com/PHPjc/628769.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/628769.html技術記事 PHP の配列は開発において非常に重要なデータ型であることはわかっています。PHP の配列 (マージ、分割、追加、検索、削除、走査...) に関する知識をご紹介します。
|
|
声明:この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。 |