首頁 > 後端開發 > php教程 > 如何透過比較特定屬性值來確定物件數組之間的差異?

如何透過比較特定屬性值來確定物件數組之間的差異?

Linda Hamilton
發布: 2024-10-23 18:18:17
原創
748 人瀏覽過

How to Determine the Difference Between Object Arrays by Comparing Specific Property Values?

透過比較特定屬性值來決定兩個物件陣列之間的差異

問題:

舊函數,例如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中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板