ホームページ  >  記事  >  バックエンド開発  >  PHP で array_diff_uassoc 関数を使用し、コールバック関数を使用してキー名とキー値に基づいて配列の違いを比較する方法

PHP で array_diff_uassoc 関数を使用し、コールバック関数を使用してキー名とキー値に基づいて配列の違いを比較する方法

王林
王林オリジナル
2023-06-26 16:54:181429ブラウズ

PHP 開発では、データ操作やデータ同期を実行するために 2 つの配列間の差異を比較することがよくあります。その中でもPHPが提供するarray_diff_uassoc関数はキー名とキー値から配列の違いを比較することができるので、この記事ではその使い方を紹介します。

  1. Function

array_diff_uassoc 関数は、PHP の組み込み配列差分比較関数です。複数の配列間の差分を比較し、キー名とキー値を比較できます。さまざまな違い。

この関数の定義は次のとおりです。

array array_diff_uassoc (array $array1, array $array2 [, array $... ], callable $key_compare_func)

このうち、$array1、$array2 などは比較対象の複数の配列であり、$key_compare_func は比較するために使用されるコールバック関数です。キー名とキー値の違い。

  1. 使用方法

例を使用して、array_diff_uassoc 関数の使用方法を示します。

最初に、2 つの配列を定義します:

$array1 = array("a"=>"apple", "b"=>"banana", "c"=>"cherry", "d"=>"date");
$array2 = array("a"=>"apple", "b"=>"banana", "f"=>"fig");

次に、キー名とキー値の違いを比較するカスタム コールバック関数を定義します:

function myfunction($key1, $key2, $value1, $value2)
{
    if ($key1 == $key2 && $value1 == $value2) {
        return 0;
    } else {
        return 1;
    }
}

関数は次の値を受け取ります。 2 つの配列のキー名とキー値である 4 つのパラメーター。キー名とキー値が同じ場合は 0 を返し、そうでない場合は比較のために 1 を返します。

最後に、array_diff_uassoc 関数を呼び出して、配列の差分比較演算を実行します。

$diff = array_diff_uassoc($array1, $array2, "myfunction");
print_r($diff);

出力結果は次のとおりです。

Array
(
    [c] => cherry
    [d] => date
)

ご覧のとおり、関数は戻り値を返します。比較された差分配列。つまり、$array1 にはあるが $array2 には含まれていない要素です。ここでは、返された差分配列により、$array1 の "c" 要素と "d" 要素が $array2 にないことを確認します。

最後に、コールバック関数の使用規則について説明します。

  • コールバック関数は、キー名 1、キー名 2、キー値 1、の順で 4 つのパラメータを受け入れる必要があります。 key value 2;
  • 戻り値 0 は 2 つのキー名とキー値が同じであることを意味し、0 以外の戻り値は 2 つのキー名またはキー値が同じであることを意味します違う。
  1. 概要

この記事では、array_diff_uassoc 関数を使用して配列の差分比較を実行する方法と、キー名とキー値に基づいて差分比較を実行する方法を紹介します。 、コールバック関数の例が示されています。この関数の使用規則をよりよく理解するために、この関数を使用する方法は他にもたくさんあることに注意してください。

以上がPHP で array_diff_uassoc 関数を使用し、コールバック関数を使用してキー名とキー値に基づいて配列の違いを比較する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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