Сравнение ассоциативных строк многомерных массивов
У вас есть два многомерных массива: $pageids и $parentpage, где каждая строка представляет запись со столбцами «id», «метка ссылки» и «url». Вы хотите найти строки, присутствующие в $pageids, но не в $parentpage, эффективно создавая массив ($pageWithNoChildren) с отсутствующими строками.
Однако использование array_diff_assoc() непосредственно в этих массивах не будет работать должным образом. потому что он сравнивает первичные ключи массива, а не содержимое вложенных строк. Чтобы сравнить вложенные строки, мы можем сначала преобразовать их в одномерные массивы, используя array_map() и функцию сериализации().
$serializedPageids = array_map('serialize', $pageids); $serializedParentpage = array_map('serialize', $parentpage);
После их преобразования мы можем использовать array_diff() для сравнения этих одномерных массивов и получения разницы.
$serializedDifference = array_diff($serializedPageids, $serializedParentpage);
Наконец, мы можем преобразовать сериализованную разницу обратно в многомерные массивы с помощью array_map() и функции unserialize().
$pageWithNoChildren = array_map('unserialize', $serializedDifference);
Этот процесс позволяет нам сравнивать содержимое вложенных строк и извлеките строки, которые присутствуют в $pageids, но не в $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', ), )
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3