APIを開発する場合、違いを判断するために、2つのペイロードの内容を比較することがよくあります。たとえば、ユーザー情報を更新するときは、新しいデータと古いデータの違いを比較するか、インターフェイスをデバッグするときは、返されたデータが予想されるデータと一致しているかどうかを確認します。 PHPは非常に便利な機能-Array_diff_assocを提供します。これは、2つの配列間の違いを比較するのに役立ちます。この関数を使用してペイロードコンテンツを比較する方法の詳細な説明を以下に示します。
array_diff_assocは、2つの配列のキー価値ペアを比較して、2番目の配列ではなく最初の配列に存在する要素を見つけるPHPの組み込み関数です。 array_diffとは異なり、 array_diff_assocは値を比較するだけでなく、キー名も比較します。要素は、キー名と値が一致しない場合にのみ異なると見なされます。
array_diff_assoc(array $array1, array $array2): array
$ array1 :比較のためのリファレンスアレイとしての最初の配列。
$ array2 :最初の配列と比較した2番目の配列。
この関数は、$ array1に存在するが、 $ array2には存在する要素を含む配列を返します。
JSON形式の2つのペイロードがあり、それぞれ以下の形式で古いユーザーデータと新しいユーザーデータを表すとします。
{
"user_id": 12345,
"name": "チャン・サン",
"email": "zhangsan@m66.net",
"phone": "1234567890"
}
{
"user_id": 12345,
"name": "チャン・サン",
"email": "zhangsan@m66.net",
"phone": "0987654321"
}
これら2つのJSONペイロードのデータの違いを比較し、キー価値のペアが一貫しているかどうかを確認したいと思います。ここでは、 array_diff_assocを使用して実装できます。
まず、これら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);
?>
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