Use array_diff_assoc () ou obtenha a diferença de matrizes multidimensionais
Estou lutando com o que acho que deve ser uma questão realmente fácil há algum tempo e simplesmente não consigo descobrir a resposta.
Eu tenho duas matrizes e essas matrizes contêm informações sobre id, linklabel e url no seguinte formato:
$pageids
--------
Array (
[0] => Array
( [id] => 1
[linklabel] => Home
[url] => home )
[1] => Array
( [id] => 2
[linklabel] => Graphic Design
[url] => graphicdesign )
[2] => Array
( [id] => 3
[linklabel] => Other Design
[url] => otherdesign )
[3] => Array
( [id] => 6
[linklabel] => Logo Design
[url] => logodesign )
[4] => Array
( [id] => 15
[linklabel] => Content Writing
[url] => contentwriting )
)
$parentpage
-----------
Array (
[0] => Array
( [id] => 2
[linklabel] => Graphic Design
[url] => graphicdesign )
[1] => Array
( [id] => 3
[linklabel] => Other Design
[url] => otherdesign ) )
Agora estou tentando comparar esses dois para encontrar as informações que estão em$pageids
mas NÃO em$parentpage
- isso formará outra matriz chamada$pageWithNoChildren
. No entanto, quando eu uso o seguinte código:
$pageWithNoChildren = array_diff_assoc($pageids,$parentpage);
oarray_diff_assoc()
é executado no primeiro nível das matrizes e, portanto, vê que ambos$pageids
e$parentpages
tem as teclas [0] e [1] para que eles sejam ignorados e retornem todas as informações de$pageids
de [2] em diante. No entanto, quero que ele analise o conteúdo das matrizes aninhadas e compare-as, por exemplo. Preciso ver qual ID, linklabel e URL estão$pageids
e não em$parentpages
e retorne esses valores.
Como posso obter oarray_diff_assoc()
para executar nas chaves das matrizes aninhadas e não nas chaves das primeiras matrizes, portanto o resultado final é uma matriz que contém o conteúdo das matrizes [0], [3] e [4] de$pageids
?