php では、2 つの配列に対して結合、交差、および差分演算を実行したい場合、array_merge()、array_intersect()、array_diff() などの php 独自の関数を直接使用して演算できます。
// array_merge の差を計算します。配列を結合するときは「+」
array_merge() 関数は、2 つ以上の配列を 1 つの配列にマージします。
重複したキー名がある場合、キーのキー値は最後のキー名に対応する値になります (後のキー名が前のキー名を上書きします)。配列が数値的にインデックス付けされている場合、キー名は連続して再インデックス付けされます。
注: array_merge() 関数に配列のみが入力され、キーが整数の場合、関数は整数キーを含む新しい配列を返します。キーのインデックスは 0 から再設定されます。 (例 2 を参照)
コードは次のとおりです |
コードをコピー |
$a = array(1 => 'a', 'b', 'c');
$b = array(1 => 'aa', 2, 'c');
$union = array_merge($a, $b);
$plus = $a + $b;
print_r($union);
print_r($plus);
結果は順番に次のとおりです:
配列
{
[0]=>
[1]=>
[2]=>
[3]=>
[4]=>2
[5]=>
}
配列
(
[1] =>
[2] =>
[3] => c
)
マージされる 2 つの配列が同じ文字列キーを持つ場合、array_merge() を使用すると元の値が上書きされます。
次の例のように、「+」を使用して配列を結合すると、「+」を使用して同じ数値キーを持つ配列を結合するのと同じように、最初の値が最終結果として返されます。
コードは次のとおりです |
コードをコピー
$a2 = array('str' => 'a', 'b', 'c');
$b2 = array('str' => 'aa', 2, 'c');
$union2 = array_merge($a2, $b2); |
$plus2 = $a2 + $b2;
print_r($union2); |
print_r($plus2);
結果は次のとおりです:
配列
(
[str] =>
[0] =>
[1] => c
[2] => 2
[3] =>
)
配列
(
[str] => a
[0] =>
[1] => c
)
注: array_merge を使用して 2 つの配列を結合する場合、返される結果には同じ要素が含まれる可能性があります。この場合、array_unique() を使用して同じ要素を削除できます。
//配列の交差を計算します
array_intersect() 関数は、2 つ以上の配列の交差配列を返します。
結果の配列には、比較された配列と他のすべてのパラメーター配列のすべての値が含まれており、キー名は変更されません。
注: 比較には値のみが使用されます。
|
コードは次のとおりです
コードをコピー
$a = array('jpg','png','gif','bmp');
$b = array('JPG','txt','docx','bmp');
$intersection = array_intersect($a, $b);
|
関数を使用して必要なものを取得することもできます (たとえば、要素では大文字と小文字が区別されません)
|
コードは次のとおりです
コードをコピー
|
$intersection2 = array_intersect(array_map('strto lower',$a), array_map('strto lower',$b));
print_r($intersection);
print_r($intersection2);
結果は次のとおりです:
コードは次のとおりです |
コードをコピー |
配列
(
[3] =>
)
配列 (
[0] =>jpg
[3] =>
)
|
//配列の差分セットを計算します
コードは次のとおりです
コードをコピー |
|
$old = array('jpg','png','gif','bmp');
$new = array('JPG','txt','docx','bmp');
$difference = array_diff($old, $new);
|
注: 返される結果要素には $old 要素が含まれますが、$new 要素は含まれません
print_r($difference);
結果は次のようになります:
コードは次のとおりです
コードをコピー |
|
配列
(
[0] =>jpg
[1] =>png
[2] =>gif
)
|
関数を使用して最初に処理してから差分セットを計算することもできます
array_diff() 関数は 2 つの配列の差分配列を返します。この配列には、比較対象の配列内にあるが、他の引数配列には含まれていないすべてのキーが含まれます。
返された配列では、キー名は変更されません。
文法
array_diff(配列1,配列2,配列3...)
コードは次のとおりです
コードをコピー |
|
$difference = array_diff(array_map('strto lower',$old), array_map('strto lower',$new));
|
|
http://www.bkjia.com/PHPjc/633094.html
www.bkjia.comtruehttp://www.bkjia.com/PHPjc/633094.html技術記事 PHP では、2 つの配列に対して和集合、積集合、差分演算を実行したい場合、array_merge()、array_intersect()、array_diff() .. などの関数を直接使用できます。