Rumah  >  Artikel  >  pembangunan bahagian belakang  >  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
Linda Hamiltonasal
2024-10-23 18:18:17642semak imbas

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>

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>

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>

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>

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!

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