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) { ["id"]=> string(3) "205" ["day_id"]=> string(2) "12" } }</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!