«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как найти строки, присутствующие в одном многомерном массиве, но отсутствующие в другом?

Как найти строки, присутствующие в одном многомерном массиве, но отсутствующие в другом?

Опубликовано 17 ноября 2024 г.
Просматривать:994

How to Find Rows Present in One Multidimensional Array but Not in Another?

Сравнение ассоциативных строк многомерных массивов

У вас есть два многомерных массива: $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