問題:
舊函數,例如array_diff和array_udiff 設計用於比較標量值陣列。我們如何確定兩個物件數組之間的差異,並根據特定屬性值進行比較?
解決方案:
幸運的是,可以利用 array_udiff以滿足這一要求。我們定義一個專注於所需屬性的自訂比較函數,然後利用 array_udiff 來確定兩個陣列之間的差異。
考慮以下範例陣列:
<code class="php">$array1 = array( (object) ['id' => '205', 'day_id' => '12'], ... ); $array2 = array( (object) ['id' => '205', 'day_id' => '13'], ... );</code>
我們的目標是根據 id 屬性來辨識這些陣列之間的差異。為此,我們可以建立一個比較函數:
<code class="php">function compare_objects($obj_a, $obj_b) { return $obj_a->id - $obj_b->id; }</code>
此函數比較兩個物件的 id 屬性,並以整數形式傳回差值。然後,我們使用array_udiff,如下所示:
<code class="php">$diff = array_udiff($array1, $array2, 'compare_objects');</code>
或者,在PHP 5.3 及更高版本中,我們可以使用匿名函數進行比較:
<code class="php">$diff = array_udiff($array1, $array2, function ($obj_a, $obj_b) { return $obj_a->id - $obj_b->id; } );</code>
此解決方案有效地計算兩個之間的差異透過比較指定的屬性值來取得物件數組。產生的 $diff 陣列將包含根據比較條件表示 $array1 或 $array2 中唯一元素的物件。
以上是如何透過比較特定屬性值來確定物件數組之間的差異?的詳細內容。更多資訊請關注PHP中文網其他相關文章!