Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana Mencari Perbezaan Antara Tatasusunan Objek Berdasarkan Nilai Lajur?

Bagaimana Mencari Perbezaan Antara Tatasusunan Objek Berdasarkan Nilai Lajur?

Susan Sarandon
Susan Sarandonasal
2024-10-23 17:58:14498semak imbas

How to Find the Difference Between Arrays of Objects Based on Column Values?

Mencari Perbezaan Antara Tatasusunan Objek Berdasarkan Nilai Lajur

Menentukan perbezaan antara dua tatasusunan objek boleh mencabar apabila menggunakan tatasusunan konvensional -fungsi perbandingan seperti array_diff atau array_udiff. Walau bagaimanapun, fungsi tersuai boleh digunakan untuk memudahkan perbandingan sifat objek tertentu.

Pertimbangkan tatasusunan objek berikut:

<code class="php">array(4) {
    [0]=>
        object(stdClass)#32 (9) {
            [&quot;id&quot;]=>
            string(3) &quot;205&quot;
            [&quot;day_id&quot;]=>
            string(2) &quot;12&quot;
        }
}</code>

Untuk mengenal pasti perbezaan antara dua tatasusunan sedemikian berdasarkan lajur "id", fungsi perbandingan tersuai boleh ditakrifkan:

<code class="php">function compare_objects($obj_a, $obj_b) {
  return $obj_a->id - $obj_b->id;
}</code>

Fungsi ini menolak sifat "id" dua objek, menghasilkan nilai berangka yang menunjukkan perbezaan antara objek tersebut.

Kod berikut menggunakan fungsi compare_objects untuk menentukan perbezaan antara dua tatasusunan objek:

<code class="php">$first_array = // Array of objects
$second_array = // Array of objects

$diff = array_udiff($first_array, $second_array, 'compare_objects');</code>

Fungsi tatasusunan_udiff membandingkan objek dalam tatasusunan pertama dan kedua menggunakan fungsi compare_objects. Hasilnya, disimpan dalam $diff, mengandungi objek yang terdapat dalam satu tatasusunan tetapi bukan yang lain.

Dalam PHP >= 5.3, fungsi tanpa nama boleh digunakan dan bukannya fungsi bernama:

<code class="php">$diff = array_udiff($first_array, $second_array,
  function ($obj_a, $obj_b) {
    return $obj_a->id - $obj_b->id;
  }
);</code>

Pendekatan diperkemas ini mencapai kefungsian yang sama seperti fungsi compare_objects. Menggunakan kaedah perbandingan tersuai ini membolehkan pengecaman cekap perbezaan antara tatasusunan objek berdasarkan nilai lajur tertentu.

Atas ialah kandungan terperinci Bagaimana Mencari Perbezaan Antara Tatasusunan Objek Berdasarkan Nilai Lajur?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn