我有一个类别和子类别的多维数组,但是一个子类别(在[childs]中)不能是父类,我需要删除作为子类别的父类别。
Array
(
[0] => Array
(
[id] => 6
[name] => Homilías
)
[1] => Array
(
[id] => 11
[name] => Obituario
)
[2] => Array
(
[id] => 12
[name] => ACTUALIDAD
[childs] => Array
(
[0] => Array
(
[name] => Homilías
[id] => 6
)
[1] => Array
(
[id] => 11
[name] => Obituario
)
)
)
)
答案 0 :(得分:0)
您可以使用array_walk_recursive,就像这样..
<?php
$array = array(
0 => array(
'id' => 6,
'name' => 'Homilias'
),
1 => array(
'id' => 11,
'name' => 'Obituario'
),
2 => array(
'id' => 12,
'name' => 'ACTUALIDAD',
'childs' => array(
0 => array(
'name' => 'Homilias',
'id' => 6
),
1 => array (
'id' => 11,
'name' => 'Obituario'
)
)
)
);
$rootCategories = array();
foreach ($array as $key => $value) {
if(!isset($value['childs']))
$rootCategories[$key] = $value['name'];
}
array_walk_recursive($array, 'MyClass::removeDuplicatedRoot', array($rootCategories, &$array));
class MyClass
{
static function removeDuplicatedRoot($myArray, $key, $data)
{
$keyToRemove = array_search($myArray, $data[0]);
if ($key == 'name' && false !== $keyToRemove) {
unset($data[1][$keyToRemove]);
}
}
}
var_dump($array);