Cari Tatasusunan Bersarang Tidak Serupa dalam Tatasusunan Berbilang Dimensi
Pertimbangkan dua tatasusunan berikut yang mengandungi baris maklumat bersekutu:
$pageids = [ ['id' => 1, 'linklabel' => 'Home', 'url' => 'home'], ['id' => 2, 'linklabel' => 'Graphic Design', 'url' => 'graphicdesign'], ['id' => 3, 'linklabel' => 'Other Design', 'url' => 'otherdesign'], ['id' => 6, 'linklabel' => 'Logo Design', 'url' => 'logodesign'], ['id' => 15, 'linklabel' => 'Content Writing', 'url' => 'contentwriting'], ]; $parentpage = [ ['id' => 2, 'linklabel' => 'Graphic Design', 'url' => 'graphicdesign'], ['id' => 3, 'linklabel' => 'Other Design', 'url' => 'otherdesign'], ];
Tugas kami adalah untuk mengenal pasti dan mengembalikan baris bersekutu yang terdapat dalam $pageids tetapi tiada dalam $parentpage. Walau bagaimanapun, menggunakan array_diff_assoc() pada peringkat pertama tatasusunan ini tidak memberikan hasil yang diingini.
Untuk mengatasi cabaran ini, kami boleh memanfaatkan gabungan array_map() dan serialize() fungsi. Pendekatan ini menukar setiap sub-tatasusunan kepada perwakilan rentetan, dengan berkesan meratakan struktur berbilang dimensi.
$pageWithNoChildren = array_map('unserialize', array_diff(array_map('serialize', $pageids), array_map('serialize', $parentpage)));
Tatasusunan $pageWithNoChildren yang terhasil mengandungi sub-tatasusunan daripada $pageids yang tidak terdapat dalam $parentpage:
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 Mencari Tatasusunan Bersarang Tidak Sama dalam Tatasusunan Berbilang Dimensi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!