Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 仅保留多维数组中包含具有指定值的指定键的根_Php_Arrays_Multidimensional Array - Fatal编程技术网

Php 仅保留多维数组中包含具有指定值的指定键的根

Php 仅保留多维数组中包含具有指定值的指定键的根,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有一个多维数组,如果它不包含具有特定值的特定键,我会尝试删除它的根 Array ( [0] => Array ( [id] => 1 [parent_id] => 0 [parent] => Array ( [0] => Array (

我有一个多维数组,如果它不包含具有特定值的特定键,我会尝试删除它的根

Array ( [0] => Array ( [id] => 1 [parent_id] => 0 [parent] => Array ( [0] => Array ( [id] => 3 [parent_id] => 1 [settings] => Array ( [0] => Array ( [id] => 3 [thekey] => 1 ) [1] => Array ( [id] => 5 [thekey] => 2 ) ) ) [1] => Array ( [id] => 4 [parent_id] => 1 [settings] => Array ( [0] => Array ( [id] => 4 [thekey] => 2 ) ) ) ) ) [1] => Array ( [id] => 2 [parent_id] => 0 [settings] => Array ( [0] => Array ( [id] => 1 [thekey] => 2 ) [1] => Array ( [id] => 2 [thekey] => 2 ) ) ) ) 排列 ( [0]=>阵列 ( [id]=>1 [parent_id]=>0 [父项]=>数组 ( [0]=>阵列 ( [id]=>3 [parent_id]=>1 [设置]=>阵列 ( [0]=>阵列 ( [id]=>3 [按键]=>1 ) [1] =>阵列 ( [id]=>5 [按键]=>2 ) ) ) [1] =>阵列 ( [id]=>4 [parent_id]=>1 [设置]=>阵列 ( [0]=>阵列 ( [id]=>4 [按键]=>2 ) ) ) ) ) [1] =>阵列 ( [id]=>2 [parent_id]=>0 [设置]=>阵列 ( [0]=>阵列 ( [id]=>1 [按键]=>2 ) [1] =>阵列 ( [id]=>2 [按键]=>2 ) ) ) ) 如果我删除所有不包含值1的[thekey],我预计会出现下一个结果:

Array ( [0] => Array ( [id] => 1 [parent_id] => 0 [parent] => Array ( [0] => Array ( [id] => 3 [parent_id] => 1 [settings] => Array ( [0] => Array ( [id] => 3 [thekey] => 1 ) ) ) ) ) ) 排列 ( [0]=>阵列 ( [id]=>1 [parent_id]=>0 [父项]=>数组 ( [0]=>阵列 ( [id]=>3 [parent_id]=>1 [设置]=>阵列 ( [0]=>阵列 ( [id]=>3 [按键]=>1 ) ) ) ) ) ) 我尝试了一个函数,但我陷入了递归

function removekey($array, $key,$eq)
{
    foreach($array as $k => $v)
    {
        if(is_array($v) && $k != $key )
        {
            foreach($array[$k]['settings'] as $si => $sa)
            {
                if($sa[$key]<>$eq)
                {
                    if(count($array[$k]['settings'])>=1)
                    {unset($array[$k]['settings'][$si]);}
                    else{unset($array[$k]);}
                }
            }
        }
        elseif($k == $key)
        {
            unset($array[$k]);
        }
    }
    return $array;
}
$result=removekey($array, 'thekey',1);
函数removekey($array,$key,$eq)
{
foreach($k=>v的数组)
{
if(is_数组($v)&&$k!=$key)
{
foreach($array[$k]['settings']as$si=>$sa)
{
如果($sa[$key]$eq)
{
如果(计数($array[$k]['settings'])>=1)
{unset($array[$k]['settings'][$si]);}
else{unset($array[$k]);}
}
}
}
elseif($k==$key)
{
未设置($array[$k]);
}
}
返回$array;
}
$result=removekey($array,'thekey',1);

你的数组有动态深度吗?@El_Vanja它没有固定的深度。但唯一的动态部分是
父级
设置
?这意味着其中一个可能发生?@El_Vanja设置只有一个级别,可以发生在任何父级中,也可以直接发生在根的第一个级别中。家长可以进入任何深度。是的,我的意思是,如果某一级别上存在
家长
,那么
设置
就不能在同一级别上存在?