現在の位置: ホーム> 最新記事一覧> APIのペイロードコンテンツの違いを比較する方法は? PHPのarray_diff_assoc関数を使用して、データ比較を実装します

APIのペイロードコンテンツの違いを比較する方法は? PHPのarray_diff_assoc関数を使用して、データ比較を実装します

M66 2025-06-06

APIを開発する場合、違いを判断するために、2つのペイロードの内容を比較することがよくあります。たとえば、ユーザー情報を更新するときは、新しいデータと古いデータの違いを比較するか、インターフェイスをデバッグするときは、返されたデータが予想されるデータと一致しているかどうかを確認します。 PHPは非常に便利な機能-Array_diff_assocを提供します。これは、2つの配列間の違いを比較するのに役立ちます。この関数を使用してペイロードコンテンツを比較する方法の詳細な説明を以下に示します。

array_diff_assoc関数は何ですか?

array_diff_assocは、2つの配列のキー価値ペアを比較して、2番目の配列ではなく最初の配列に存在する要素を見つけるPHPの組み込み関数です。 array_diffとは異なり、 array_diff_assocは値を比較するだけでなく、キー名も比較します。要素は、キー名と値が一致しない場合にのみ異なると見なされます。

関数プロトタイプ:

 array_diff_assoc(array $array1, array $array2): array
  • $ array1 :比較のためのリファレンスアレイとしての最初の配列。

  • $ array2 :最初の配列と比較した2番目の配列。

この関数は、$ array1に存在するが、 $ array2には存在する要素を含む配列を返します。

APIペイロードコンテンツの比較を実装します

JSON形式の2つのペイロードがあり、それぞれ以下の形式で古いユーザーデータと新しいユーザーデータを表すとします。

古いデータ(old_payload.json)

 {
    "user_id": 12345,
    "name": "チャン・サン",
    "email": "zhangsan@m66.net",
    "phone": "1234567890"
}

新しいデータ(new_payload.json)

 {
    "user_id": 12345,
    "name": "チャン・サン",
    "email": "zhangsan@m66.net",
    "phone": "0987654321"
}

これら2つのJSONペイロードのデータの違いを比較し、キー価値のペアが一貫しているかどうかを確認したいと思います。ここでは、 array_diff_assocを使用して実装できます。

コード実装

ステップ1:JSONデータの読み取りとデコード

まず、これら2つのJSONデータをPHPアレイに変換する必要があります。

 <?php

// 古いデータ
$old_payload = '{"user_id": 12345, "name": "チャン・サン", "email": "zhangsan@m66.net", "phone": "1234567890"}';
// 新しいデータ
$new_payload = '{"user_id": 12345, "name": "チャン・サン", "email": "zhangsan@m66.net", "phone": "0987654321"}';

// デコード JSON データはです PHP 配列
$old_data = json_decode($old_payload, true);
$new_data = json_decode($new_payload, true);

// 输出配列查看结果
var_dump($old_data);
var_dump($new_data);
?>

ステップ2: Array_diff_assocを使用して、違いを比較します

array_diff_assoc関数を使用すると、2つの配列の違いを簡単に見つけることができます。

 <?php

// 違いを取得します
$differences = array_diff_assoc($old_data, $new_data);

// 出力の違い
if (!empty($differences)) {
    echo "データの違い:\n";
    print_r($differences);
} else {
    echo "一貫性のあるデータ,違いはありません。\n";
}
?>

実行結果:

 データの違い:
Array
(
    [phone] => 1234567890
)

上記のように、結果は、電話の値が古いデータと新しいデータで異なることを示しており、古いデータの1234567890電話値を示しています。これはまさに比較を通じて得たい違いです。

アプリケーションシナリオ

  • APIデバッグ:APIを開発する場合、インターフェイスによって返されたデータを予想される結果と比較する必要がある場合があります。 array_diff_assocを使用して違いをすばやく表示し、開発者が問題を見つけるのを助けます。

  • データの更新:ユーザープロファイルの更新のシナリオでは、この方法を使用して、新しいデータと古いデータの違いを比較して、どのフィールドが変更されたかを判断できます。

  • ロギング:ユーザーの動作またはデータの変更ログを記録するときは、以降の分析を容易にするために、データの変更の特定のコンテンツを理解します。

  • 関連タグ:

    API