PHPのarray_diff()関数を使用し2つ以上の配列の値を比較し差を取得します。
array_diff()関数は、2つ、もしくは2つ以上の配列の値を比較し、「差」を取得することができます。例えば、aという配列が存在し、その中の値で、bやcなどの配列に存在しない値を返します。
■基本的な構文
array_diff(array1, array2, array3, ...)
array1は、 比較対象となる配列を指定します。
array2,array3,…は、比較するための配列を指定します。
■環境
・Windows10
・XAMPP 8.0.6
・PHP Version 8.0.6
■array_diff()関数を使用し2つ以上の配列の値を比較し差を取得する
では、PHPのarray_diff()関数を使用し2つ以上の配列の値を比較し差を取得するスクリプトを書いていきます。
■コード
<html lang="ja">
<head>
<title>array_diff()関数を使用し2つ以上の配列の値を比較し差を取得</title>
</head>
<body>
<?php
$a = array("a"=>"mango","b"=>"blueberry","c"=>"fig","d"=>"strawberry");
$b = array("x"=>"mango","y"=>"blueberry","z"=>"fig");
$result = array_diff($a,$b);
print_r($result);
?>
</body>
</html>
今回はaという変数を定義し、その中でarray()関数を使用し、キーと値のペアを格納します。これで配列が作成されます。
次に、bという変数を定義し、同じように、その中でarray()関数を使用し、キーと値のペアを格納し、配列を作成します。この時、a変数内の配列の値と同じものを格納し、キーはa変数とは別のキーを格納します。
作成後、resultという変数を定義し、その中でarray_diff()関数を使用します。array_diff()関数の括弧内には、第1の引数,パラメーターとして、比較対象となるa変数を渡します。第2の引数,パラメーターとして、比較するためのb変数を渡します。渡された情報を元に、配列の値を比較し差が返されます。
返された差をprint_r()関数で出力します。
■実行
では、このスクリプトを「compare_two_array_val_get_diff.php」という名前で保存し、実行させてみます。
実行してみると、array_diff()関数を使用したことで、比較対象となるa変数内の配列と、比較するためのb変数内の配列が、比較され、b変数内の配列に存在しないa変数内の値が、print_r()関数で出力されました。今回の実行し、個人的に注目したことはa変数とb変数内の配列のキーが異なっていても、キーとペアの値比較されて、差を取得できるところです。
■日本語の場合
出力後、2つ以上の配列のキーと値が日本語の場合はどうなるのでしょうか。やってみます。
■コード(compare_two_array_val_get_diff_2.php)
<html lang="ja">
<head>
<title>array_diff()関数を使用し2つ以上の配列の値を比較し差を取得</title>
</head>
<body>
<?php
$a = array("あ"=>"赤富士","い"=>"井伊直弼","う"=>"上野公園","え"=>"柄本");
$b = array("赤"=>"赤富士","井"=>"井伊直弼","上"=>"上野公園");
$result = array_diff($a,$b);
print_r($result);
?>
</body>
</html>
■実行
このスクリプトを「compare_two_array_val_get_diff_2.php」という名前で保存し実行してみると、日本語であっても、array_diff()関数を使用したことで、比較対象となるa変数内の配列と、比較するためのb変数内の配列が比較され、差を取得。取得された差をprint_r()関数で出力させることができました。
コメント