Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Menentukan Perbezaan Antara Tatasusunan Objek dengan Membandingkan Nilai Harta Tertentu?

Bagaimana untuk Menentukan Perbezaan Antara Tatasusunan Objek dengan Membandingkan Nilai Harta Tertentu?

Linda Hamilton
Lepaskan: 2024-10-23 18:18:17
asal
729 orang telah melayarinya

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

Menentukan Perbezaan Antara Dua Tatasusunan Objek dengan Membandingkan Nilai Harta Tertentu

Soalan:

Fungsi warisan seperti array_diff dan array_udiff direka untuk membandingkan tatasusunan nilai skalar. Bagaimanakah kita boleh menentukan perbezaan antara dua tatasusunan objek, di mana kita ingin membandingkan berdasarkan nilai sifat tertentu?

Penyelesaian:

Nasib baik, array_udiff boleh dimanfaatkan untuk menangani keperluan ini. Kami mentakrifkan fungsi perbandingan tersuai yang memfokuskan pada sifat yang diingini, dan kemudian menggunakan tatasusunan_udiff untuk menentukan perbezaan antara dua tatasusunan.

Pertimbangkan tatasusunan contoh berikut:

<code class="php">$array1 = array(
    (object) ['id' => '205', 'day_id' => '12'],
    ...
);

$array2 = array(
    (object) ['id' => '205', 'day_id' => '13'],
    ...
);</code>
Salin selepas log masuk

Matlamat kami ialah untuk mengenal pasti perbezaan antara tatasusunan ini berdasarkan sifat id. Untuk mencapai matlamat ini, kita boleh mencipta fungsi perbandingan:

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

Fungsi ini membandingkan sifat id dua objek dan mengembalikan perbezaan sebagai integer. Kami kemudiannya menggunakan array_udiff seperti berikut:

<code class="php">$diff = array_udiff($array1, $array2, 'compare_objects');</code>
Salin selepas log masuk

Sebagai alternatif, dengan PHP 5.3 dan ke atas, kami boleh menggunakan fungsi tanpa nama sebagai perbandingan:

<code class="php">$diff = array_udiff($array1, $array2,
  function ($obj_a, $obj_b) {
    return $obj_a->id - $obj_b->id;
  }
);</code>
Salin selepas log masuk

Penyelesaian ini mengira perbezaan antara dua dengan berkesan tatasusunan objek dengan membandingkan nilai harta yang ditentukan. Tatasusunan $diff yang terhasil akan mengandungi objek yang mewakili elemen unik sama ada daripada $array1 atau $array2 berdasarkan kriteria perbandingan.

Atas ialah kandungan terperinci Bagaimana untuk Menentukan Perbezaan Antara Tatasusunan Objek dengan Membandingkan Nilai Harta Tertentu?. 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