Bandingkan Baris Bersekutu Tatasusunan 2 Dimensi: Panduan Komprehensif
Tatasusunan berbilang dimensi ialah cara yang berkuasa untuk mengatur data dalam PHP, tetapi membandingkannya boleh menjadi satu cabaran. Soalan ini meneroka cara untuk membandingkan baris bersekutu dua tatasusunan 2 dimensi dengan berkesan menggunakan fungsi array_diff_assoc().
Cabaran:
Objektifnya adalah untuk mengenal pasti dan mengekstrak baris daripada $pageids yang tidak terdapat dalam $parentpage. Fungsi array_diff_assoc() direka untuk membandingkan tatasusunan bersekutu, tetapi ia beroperasi pada tahap pertama tatasusunan, mengabaikan baris bersarang.
Masalahnya:
The kod yang disediakan:
$pageWithNoChildren = array_diff_assoc($pageids,$parentpage);
mengembalikan hasil yang salah kerana ia mengabaikan yang bersarang baris dan hanya mempertimbangkan kekunci tahap pertama.
Penyelesaian:
Penyelesaian yang dicadangkan melibatkan penukaran setiap sub-tatasusunan kepada perwakilan rentetan menggunakan serialize(). Ini mengubah tatasusunan berbilang dimensi kepada tatasusunan satu dimensi:
$diff = array_diff(array_map('serialize', $pageids), array_map('serialize', $parentpage));
Seterusnya, perbezaan ditukar kembali kepada sub-tatasusunan menggunakan unserialize():
$pageWithNoChildren = array_map('unserialize', $diff);
Kaedah ini dengan berkesan membandingkan kandungan baris bersarang, menghasilkan output yang dijangkakan berikut:
array ( 0 => array ( 'id' => 1, 'linklabel' => 'Home', 'url' => 'home', ), 3 => array ( 'id' => 6, 'linklabel' => 'Logo Design', 'url' => 'logodesign', ), 4 => array ( 'id' => 15, 'linklabel' => 'Content Writing', 'url' => 'contentwriting', ), )
Atas ialah kandungan terperinci Bagaimana untuk Membandingkan Baris Bersekutu Tatasusunan 2 Dimensi dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!