PHP多维数组-提取孩子/家长
我试图解析一个多维数组,如下所示: 例如,我想提取NAME=>Ma的所有子项的名称,并再次提取它们的所有子项PHP多维数组-提取孩子/家长,php,arrays,parsing,Php,Arrays,Parsing,我试图解析一个多维数组,如下所示: 例如,我想提取NAME=>Ma的所有子项的名称,并再次提取它们的所有子项 Array ( [0] => Array ( [ID] => 35 [Name] => Ma [Note] => [parent_id] => 0 [children] => Array ( [0] =>
Array
(
[0] => Array
(
[ID] => 35
[Name] => Ma
[Note] =>
[parent_id] => 0
[children] => Array
(
[0] => Array
(
[ID] => 55
[Name] => OS
[Note] =>
[parent_id] => 35
[children] => Array
(
[0] => Array
(
[ID] => 416
[Name] => fs
[Note] =>
[parent_id] => 55
[children] => Array
(
)
)
[1] => Array
(
[ID] => 921
[Name] => fd
[Note] =>
[parent_id] => 55
[children] => Array
(
)
)
[2] => Array
(
[ID] => 980
[Name] => FP
[Note] =>
[parent_id] => 55
[DomainID] => 1
[children] => Array
(
)
)
)
)
)
[1] => Array
(
[ID] => 59
[Name] => PC
[Note] =>
[parent_id] => 35
[children] => Array
(
[0] => Array
(
[ID] => 60
[Name] => IT
[Note] =>
[parent_id] => 59
[children] => Array
(
)
)
阵列一直这样运行。更多的父母,更多的孩子。。。。
我试图提取的唯一数据是名称,但我需要以这样一种方式获取它们,即我知道它们属于哪一个父级
Array
(
[0] => Array
(
[ID] => 35
[Name] => Ma
[Note] =>
[parent_id] => 0
[children] => Array
(
[0] => Array
(
[ID] => 55
[Name] => OS
[Note] =>
[parent_id] => 35
[children] => Array
(
[0] => Array
(
[ID] => 416
[Name] => fs
[Note] =>
[parent_id] => 55
[children] => Array
(
)
)
[1] => Array
(
[ID] => 921
[Name] => fd
[Note] =>
[parent_id] => 55
[children] => Array
(
)
)
[2] => Array
(
[ID] => 980
[Name] => FP
[Note] =>
[parent_id] => 55
[DomainID] => 1
[children] => Array
(
)
)
)
)
)
[1] => Array
(
[ID] => 59
[Name] => PC
[Note] =>
[parent_id] => 35
[children] => Array
(
[0] => Array
(
[ID] => 60
[Name] => IT
[Note] =>
[parent_id] => 59
[children] => Array
(
)
)
foreach($outArray as $row => $innerArray){
foreach($innerArray as $innerRow => $value){
echo $value . "<br/>";
foreach($outArray作为$row=>$innerArray){
foreach($innerArray作为$innerRow=>$value){
回显$value.“
”;
有一种方法我试图提取数据,但没有得到任何子项。php中有一个名为
array\u walk\u recursive
的函数可以处理这个问题。您可以使用它。我已经为您准备了一个示例代码。请参见以下内容:
Array
(
[0] => Array
(
[ID] => 35
[Name] => Ma
[Note] =>
[parent_id] => 0
[children] => Array
(
[0] => Array
(
[ID] => 55
[Name] => OS
[Note] =>
[parent_id] => 35
[children] => Array
(
[0] => Array
(
[ID] => 416
[Name] => fs
[Note] =>
[parent_id] => 55
[children] => Array
(
)
)
[1] => Array
(
[ID] => 921
[Name] => fd
[Note] =>
[parent_id] => 55
[children] => Array
(
)
)
[2] => Array
(
[ID] => 980
[Name] => FP
[Note] =>
[parent_id] => 55
[DomainID] => 1
[children] => Array
(
)
)
)
)
)
[1] => Array
(
[ID] => 59
[Name] => PC
[Note] =>
[parent_id] => 35
[children] => Array
(
[0] => Array
(
[ID] => 60
[Name] => IT
[Note] =>
[parent_id] => 59
[children] => Array
(
)
)
$results = array();
array_walk_recursive($array, function ($item, $key) use (&$results){
if ($key == 'Name') {
$results[] = $item;
}
});
var_dump($results);
上面的代码将输出数组中所有“Name”键的值
Array
(
[0] => Array
(
[ID] => 35
[Name] => Ma
[Note] =>
[parent_id] => 0
[children] => Array
(
[0] => Array
(
[ID] => 55
[Name] => OS
[Note] =>
[parent_id] => 35
[children] => Array
(
[0] => Array
(
[ID] => 416
[Name] => fs
[Note] =>
[parent_id] => 55
[children] => Array
(
)
)
[1] => Array
(
[ID] => 921
[Name] => fd
[Note] =>
[parent_id] => 55
[children] => Array
(
)
)
[2] => Array
(
[ID] => 980
[Name] => FP
[Note] =>
[parent_id] => 55
[DomainID] => 1
[children] => Array
(
)
)
)
)
)
[1] => Array
(
[ID] => 59
[Name] => PC
[Note] =>
[parent_id] => 35
[children] => Array
(
[0] => Array
(
[ID] => 60
[Name] => IT
[Note] =>
[parent_id] => 59
[children] => Array
(
)
)
请告诉我这是否是您所期望的。您可以在array\u walk\u recursive
Array
(
[0] => Array
(
[ID] => 35
[Name] => Ma
[Note] =>
[parent_id] => 0
[children] => Array
(
[0] => Array
(
[ID] => 55
[Name] => OS
[Note] =>
[parent_id] => 35
[children] => Array
(
[0] => Array
(
[ID] => 416
[Name] => fs
[Note] =>
[parent_id] => 55
[children] => Array
(
)
)
[1] => Array
(
[ID] => 921
[Name] => fd
[Note] =>
[parent_id] => 55
[children] => Array
(
)
)
[2] => Array
(
[ID] => 980
[Name] => FP
[Note] =>
[parent_id] => 55
[DomainID] => 1
[children] => Array
(
)
)
)
)
)
[1] => Array
(
[ID] => 59
[Name] => PC
[Note] =>
[parent_id] => 35
[children] => Array
(
[0] => Array
(
[ID] => 60
[Name] => IT
[Note] =>
[parent_id] => 59
[children] => Array
(
)
)
希望这有帮助。您到底是如何尝试的,您的代码是什么样子的,以及它如何不做您需要它做的事情?请发布您的代码,我们可以帮助您。@jeroen我尝试过像这样运行foreach循环:foreach($outArray as$row=>$innerray){foreach($innerray as$innerRow=>$value){echo$value。“
”;这很好,但是我如何才能只调用[Name]=>Ma的孩子呢?我已经为您提供了一个基线。请随意修改代码。
Array
(
[0] => Array
(
[ID] => 35
[Name] => Ma
[Note] =>
[parent_id] => 0
[children] => Array
(
[0] => Array
(
[ID] => 55
[Name] => OS
[Note] =>
[parent_id] => 35
[children] => Array
(
[0] => Array
(
[ID] => 416
[Name] => fs
[Note] =>
[parent_id] => 55
[children] => Array
(
)
)
[1] => Array
(
[ID] => 921
[Name] => fd
[Note] =>
[parent_id] => 55
[children] => Array
(
)
)
[2] => Array
(
[ID] => 980
[Name] => FP
[Note] =>
[parent_id] => 55
[DomainID] => 1
[children] => Array
(
)
)
)
)
)
[1] => Array
(
[ID] => 59
[Name] => PC
[Note] =>
[parent_id] => 35
[children] => Array
(
[0] => Array
(
[ID] => 60
[Name] => IT
[Note] =>
[parent_id] => 59
[children] => Array
(
)
)