在 PHP 程式設計領域,array_diff 和 array_udiff 函數提供了確定兩個陣列之間差異的方法。然而,在處理物件數組時,需要一種客製化的方法。
物件數組,如圖所示:
array(4) {
[0]=>
object(stdClass)#32 (9) {
["id"]=>
string(3) "205"
["day_id"]=>
string(2) "12"
}
}
提出了一個獨特的挑戰,特別是如果人們希望根據特定列的值來確定差異,例如範例中的「id」。
為了解決這個問題,可以使用 array_udiff 函數來幫助我們。它需要第三個參數,這是一個使用者定義的函數,負責比較物件。透過設計一個合適的比較函數,我們可以指示 array_udiff 執行所需的操作。
以下是如何實現此目的的範例:
function compare_objects($obj_a, $obj_b) {
return $obj_a->id - $obj_b->id;
}
$diff = array_udiff($first_array, $second_array, 'compare_objects');
在PHP 5.3 中,可以使用匿名函數來取代宣告單獨的函數:
$diff = array_udiff($first_array, $second_array,
function ($obj_a, $obj_b) {
return $obj_a->id - $obj_b->id;
}
);
透過這些技術,您現在能夠透過比較任何所需列或屬性中的值來有效確定物件陣列之間的差異。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3