【问题标题】:Remove array from multi-dimensional Array in PHP从 PHP 中的多维数组中删除数组
【发布时间】:2016-01-03 05:49:17
【问题描述】:

我在后端构建菜单,由数组和子数组填充。 结构在config.php上..

$primary_nav = array(
   array(
        'name'  => 'Μέλη',
        'url'   => 'member_list.php',
        'icon'  => 'fa fa-users',
        'access'=> 0
    ),array(
        'name'  => 'Ημερίδες',
        'url'   => ($usr['access_level'] == 1) ? 'imerides_list.php':'javascript:void(0)',
        'icon'  => 'fa fa-bullhorn',
        'access'=> 1
    )
);

在 Class Users 上,我添加了检索访问级别的位置

if($row['access_level'] != 1){
    unset($primary_nav[1]);
}

我该怎么做,if access level == 1,删除数组parent?

我尝试了unset($primary_nav[1]) 和array_slice,但它们不起作用。

【问题讨论】:

  • 请出示您的代码
  • "删除数组父级" - 那会是哪一个?
  • 阵列父级,如果 access_level==1 在此阵列上,将是 $primary_nav[1]。整个子数组可能会更好
  • unset($primary_nav[1]) 和 array_slice() 是怎么回事?你从他们那里得到了什么影响?不适合您需求的效果是什么?另外,您是否尝试过array_splice() 而不是array_slice()?那么采取完全不同的方法并根据权限构建菜单而不是削减它呢?
  • 当我说不工作时,我的意思是数组没有被删除..

标签: php arrays multidimensional-array slice


【解决方案1】:

对不起,我刚刚注意到,我是说类用户,它是类用户,用户是一个公共函数,没有传入 $primary_nav,这就是它没有看到取消设置它的数组的原因。 .

【讨论】:

  • 请使用您问题上的编辑链接添加更多信息。 Post Answer 按钮应仅用于问题的完整答案。
  • 这是完整的答案...$primary_nav 数组没有传递给“用户”类的公共函数以便可读和编辑。
【解决方案2】:

你可以这样做:

$primary_nav = array(
   array(
        'name'  => 'Μέλη',
        'url'   => 'member_list.php',
        'icon'  => 'fa fa-users',
        'access'=> 0
    ),array(
        'name'  => 'Ημερίδες',
        'url'   => 'test',
        'icon'  => 'fa fa-bullhorn',
        'access'=> 1
    )
);

foreach($primary_nav as $index=>$obj){
    if($obj['access']==1){
        unset($primary_nav[$index]);
    }
}

print_r($primary_nav);

【讨论】:

  • 他说的是 '$usr['access_level']' 而不是 '$obj['access']'
  • 嗯,现在我明白了。 @MahaDev 对于'$usr['access_level'],我也可以采用同样的方法。
  • 仍然没有删除数组..unset 没有删除数组
【解决方案3】:
Try It ,May Help You .
$primary_nav = array(
   array(
        'name'  => 'Sourabh',
        'url'   => 'member_list.php',
        'icon'  => 'fa fa-users',
        'access'=> 0
    ),array(
        'name'  => 'Nigam',
        'url'   => ($usr['access_level'] == 1) ? 'imerides_list.php':'javascript:void(0)',
        'icon'  => 'fa fa-bullhorn',
        'access'=> 1
    )
);
foreach ($primary_nav as $key=>$primary) {
    foreach ($primary as $vkey=>$value) {
        if($vkey=='access' AND $value==1){
            unset($primary_nav[$key]);
        }
    }
}
echo '<pre>';
print_r($primary_nav);

【讨论】:

  • 想告诉我们你的代码是做什么的以及它是如何回答问题的?
猜你喜欢
  • 1970-01-01
  • 2018-12-26
  • 2019-09-04
  • 1970-01-01
  • 2019-08-05
  • 1970-01-01
  • 2017-06-23
  • 2015-05-22
  • 2017-01-01
相关资源
最近更新 更多