Smo*_*een 5 php arrays multidimensional-array
我一直在努力解决我认为现在应该是一个非常简单的问题,而且无法解决问题.
我有两个数组,这些数组包含有关id,linklabel和url的信息,格式如下:
$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 ) )
Run Code Online (Sandbox Code Playgroud)
我现在正在尝试比较这两个,以便找到$pageids但不在的信息$parentpage- 这将构成另一个被调用的数组$pageWithNoChildren.但是,当我使用以下代码时:
$pageWithNoChildren = array_diff_assoc($pageids,$parentpage);
Run Code Online (Sandbox Code Playgroud)
在array_diff_assoc()阵列上的第一级运行,并因此认为,这两个$pageids和$parentpages具有[0]和[1]键,因此忽略它们,并返回从所有的信息$pageids从[2]开始.但是我希望它能够查看嵌套数组的内容并比较这些内容,例如我需要它来查看哪个id,linklabel和url都在,$pageids而不是$parentpages返回这些值.
如何array_diff_assoc()在嵌套数组的键上运行而不是第一个数组的键,所以最终结果是一个包含[0],[3]和[4]数组内容的数组$pageids?
Abr*_*ver 17
要检查多个deminsions尝试这样的事情:
$pageWithNoChildren = array_map('unserialize',
array_diff(array_map('serialize', $pageids), array_map('serialize', $parentpage)));
Run Code Online (Sandbox Code Playgroud)
array_map() 通过运行主阵列的每个子阵列 serialize()serialize() 将每个子数组转换为该子数组的字符串表示形式array_diff() 现在有一个一维数组用于每个要比较的数组array_map()运行数组结果(差异)unserialize(),将字符串表示形式转换回子数组QED