"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como encontrar linhas presentes em uma matriz multidimensional, mas não em outra?

Como encontrar linhas presentes em uma matriz multidimensional, mas não em outra?

Publicado em 17/11/2024
Navegar:913

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

Comparando linhas associativas de matrizes multidimensionais

Você tem duas matrizes multidimensionais, $pageids e $parentpage, onde cada linha representa um registro com colunas 'id', 'linklabel' e 'url'. Você deseja encontrar as linhas presentes em $pageids, mas não em $parentpage, criando efetivamente uma matriz ($pageWithNoChildren) com as linhas ausentes.

No entanto, usar array_diff_assoc() diretamente nessas matrizes não funcionará como esperado porque compara as chaves primárias da matriz, não o conteúdo das linhas aninhadas. Para comparar as linhas aninhadas, podemos primeiro convertê-las em arrays unidimensionais usando array_map() e a função serialize().

$serializedPageids = array_map('serialize', $pageids);
$serializedParentpage = array_map('serialize', $parentpage);

Depois de convertê-los, podemos usar array_diff() para comparar esses arrays unidimensionais e obter a diferença.

$serializedDifference = array_diff($serializedPageids, $serializedParentpage);

Finalmente, podemos converter a diferença serializada de volta para matrizes multidimensionais usando array_map() e a função unserialize().

$pageWithNoChildren = array_map('unserialize', $serializedDifference);

Este processo nos permite comparar o conteúdo das linhas aninhadas e extraia as linhas que estão presentes em $pageids, mas não em $parentpage, resultando na saída esperada:

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',
  ),
)
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3