根据值不工作取消设置多维数组项

时间:2015-10-21 12:07:03

标签: php arrays multidimensional-array

我正在尝试在多维数组中取消设置数组项。然而,这种方法仅适用于第二循环unset中的第一循环(这不是我的情况)。

我试图在这里找到但无法通过这些解决方案获得结果。所以最终用新帖子发帖。

$arr = [
    'subnav'  => [
        'first'  => [
            'one'   => 'hello',
            'two'   => 'Jatin',
            'admin' => TRUE,
        ],
        'second' => [
            'one'   => 'hello',
            'two'   => 'Priya',
            'admin' => FALSE,
        ],
    ],
    'pagenav' => [
        'cook'   => [
            'one'   => 'hello',
            'two'   => 'Rahul',
            'admin' => TRUE,
        ],
        'driver' => [
            'one'   => 'hello',
            'two'   => 'Vijay',
            'admin' => TRUE,
        ],
    ],
];

foreach ( $arr as $floop => $fval ) {

    foreach ( $fval as $nav => $item ) {
        if ( $item[ 'admin' ] == FALSE ) {
            unset( $fval[ $nav ] );
        }
    }
}

所以我想删除所有admin => false

的项目

2 个答案:

答案 0 :(得分:1)

你尝试取消设置一个不是数组的变量,所以试试

foreach ( $arr as $floop => $fval ) {

   foreach ( $fval as $nav => $item ) {
      if ( $item[ 'admin' ] == FALSE ) {
        unset( $arr[$floop][ $nav ] );
      }
   }
}

答案 1 :(得分:0)

您可以尝试以下方法:(未经测试)

function unsetAdmin(&$array)
{
    foreach($array as $key => &$value) {
        if (is_array($value)) {
            unsetAdmin($value);
        }
        if (false === $value && $key == 'admin') {
            unset($array[$key]);
        }
    }
}