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

Bagaimana Mencari Perbezaan Antara Tatasusunan Objek Berdasarkan Nilai Lajur?

Susan Sarandon
Lepaskan: 2024-10-23 17:58:14
asal
603 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan