PHPのarray_diff_assoc()関数を使用し2つ以上の配列のキーと値を比較し差(違い)を取得する

PHPのarray_diff_assoc()関数を使用し2つ以上の配列の値を比較し差(違い)を取得してみます。

array_diff_assoc()関数は、2つ、もしくは2つ以上の配列のキーと値のペアを比較し、差(違い)を取得することができます。

戻り値は、例えばaという配列が比較対象となる最初の配列であれば、最初の配列内のキーと値のペアのうちで、他の配列に存在しないキーと値のペアを含む配列を返します。

■基本的な構文

array_diff(array1, array2, array3, ...)

array1は、 比較対象となる配列を指定します。

array2,array3,…は、比較するための配列を指定します。

■環境

・Windows10

・XAMPP 8.0.6

・PHP Version 8.0.6

■array_diff_assoc()関数を使用し2つ以上の配列の値を比較し差(違い)を取得する

では、PHPのarray_diff_assoc()関数を使用し2つ以上の配列の値を比較し差(違い)を取得するスクリプトを書いていきます。

■コード

<html lang="ja"> 
<head> 
<title>array_diff_assoc()関数を使用し2つ以上の配列のキーと値を比較し差(違い)を取得する</title>
</head>
<body>
<?php
$a = array("a"=>"apple","b"=>"blueberry","c"=>"dragonfruit","d"=>"strawberry");
$b = array("a"=>"apple","b"=>"blueberry","c"=>"dragonfruit");
$result = array_diff_assoc($a,$b);
print_r($result);
?>
</body>
</html>

今回はaという変数を定義し、その中でarray()関数を使用し、キーと値のペアを格納します。これで配列が作成されます。

次に、bという変数を定義し、同じように、その中でarray()関数を使用し、キーと値のペアを格納し、配列を作成します。この時、a変数内の配列のキーと値のペアと同じものを格納します。

作成後、resultという変数を定義し、その中でarray_diff_assoc()関数を使用します。array_diff_assoc()関数の括弧内には、第1の引数,パラメーターとして、比較対象となるa変数を渡します。第2の引数,パラメーターとして、比較するためのb変数を渡します。渡された情報を元に、配列のキーと値のペアを比較し、差(違い)が返されます。

返された差(違い)をprint_r()関数で出力します。

■実行

では、このスクリプトを「compare_keys_val_array_get_diff.php」という名前で保存し、実行させてみます。

実行してみると、array_diff_assoc()関数を使用したことで、比較対象となるa変数内の配列と、比較するためのb変数内の配列のキーと値のペアが比較され、差(違い)は「”d”=>”strawberry”」のみとなるので、この差(違い)が、print_r()関数で出力されました。

出力後、今後は下記のスクリプトを実行してみます。

■コード(compare_keys_val_array_get_diff_2.php)

<html lang="ja"> 
<head> 
<title>array_diff_assoc()関数を使用し2つ以上の配列のキーと値を比較し差(違い)を取得する</title>
</head>
<body>
<?php
$a = array("a"=>"apple","b"=>"blueberry","c"=>"dragonfruit","d"=>"strawberry");
$b = array("x"=>"apple","y"=>"blueberry","z"=>"dragonfruit");
$result = array_diff_assoc($a,$b);
print_r($result);
?>
</html>

■実行

「compare_keys_val_array_get_diff_2.php」というスクリプトを実行してみると、先ほど同じように、array_diff_assoc()関数を使用したことで、比較対象となるa変数内の配列と、比較するためのb変数内の配列のキーと値のペアが比較されます。比較されますが、今度は、配列の値はa変数と、b変数で同じものが存在しますが、キーはa変数とb変数では異なっています。

異なっているため、今回のスクリプトでは、a変数が最初に定義された変数であり、最初の配列でもありますので、最初の配列であるa変数の配列内で、b変数との差(違い)が返されます。

返されたa変数内の配列は「”a”=>”apple”,”b”=>”blueberry”,”c”=>”dragonfruit”,”d”=>”strawberry”」となり、これがprint_r()関数で出力されました。

コメント

タイトルとURLをコピーしました