當前位置: 首頁> 最新文章列表> 如何在API 中比較payload 內容的差異?使用PHP 的array_diff_assoc 函數實現數據對比

如何在API 中比較payload 內容的差異?使用PHP 的array_diff_assoc 函數實現數據對比

M66 2025-06-06

在開發API 時,我們常常需要對比兩個payload 的內容,以便確定它們的差異。比如,在更新用戶信息時,比較新舊數據的不同點,或者在調試接口時,查看返回的數據和預期數據是否一致。 PHP 提供了一個非常有用的函數—— array_diff_assoc ,它可以幫助我們比較兩個數組的差異,下面就為大家詳細講解如何使用該函數來實現payload 內容的對比。

什麼是array_diff_assoc函數?

array_diff_assoc是PHP 內建的一個函數,它用於比較兩個數組的鍵值對,找出在第一個數組中存在但在第二個數組中不存在的元素。與array_diff不同, array_diff_assoc不僅會比較值,還會比較鍵名,只有當鍵名和值都不匹配時,該元素才會被認為是不同的。

函數原型:

 array_diff_assoc(array $array1, array $array2): array
  • $array1 :第一個數組,作為對比的參考數組。

  • $array2 :第二個數組,與第一個數組進行比較。

該函數返回一個數組,包含了在$array1中存在但在$array2中不存在的元素。

實現API payload 內容對比

假設我們有兩個JSON 格式的payload,分別代表舊的和新的用戶數據,格式如下:

舊數據(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"
}

我們想比較這兩個JSON payload 中的數據差異,檢查它們的鍵值對是否一致。這裡,我們可以使用array_diff_assoc來實現。

代碼實現

步驟1:讀取和解碼JSON 數據

首先,我們需要將這兩個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函數,我們可以輕鬆地找出兩個數組之間的差異。

 <?php

// 獲取差異
$differences = array_diff_assoc($old_data, $new_data);

// 輸出差異
if (!empty($differences)) {
    echo "數據差異:\n";
    print_r($differences);
} else {
    echo "數據一致,沒有差異。\n";
}
?>

運行結果:

 數據差異:
Array
(
    [phone] => 1234567890
)

如上所示,結果顯示phone的值在舊數據和新數據中有所不同,顯示的是舊數據中的phone1234567890 。這正是我們希望通過對比得到的差異。

應用場景

  • API 調試:當開發API 時,可能需要對比接口返回的數據與預期結果,使用array_diff_assoc可以快速查看差異,幫助開發者定位問題。

  • 數據更新:在用戶資料更新的場景中,可以使用該方法對比新舊數據的不同,決定哪些字段發生了變化。

  • 日誌記錄:在記錄用戶行為或者數據變更日誌時,了解數據變更的具體內容,便於後續分析。

  • 相關標籤:

    API