从值等于的2d数组中删除数组

时间:2012-05-13 23:08:21

标签: php arrays

我有以下数组结构:

  0 => 
    array
      'all_sessions_available' => boolean true
      'all_sessions_unavailable' => boolean false
  ....
  22 => 
    array
      'all_sessions_available' => boolean false
      'all_sessions_unavailable' => boolean true

如果all_sessions_unavailable = true

,我正在尝试删除完整的数组元素

我有以下代码:

for ($i = 0; $i <= count($processData); $i++) {
    if ($processData[$i]['all_sessions_unavailable'] === true) {
        unset($processData[$i]);
    }
}

然而,它删除了除最后一个数组之外的所有数组(在这种情况下为22,恰好是整个数组中的最后一个数组,如果这有任何区别的话)

我有什么问题吗?

3 个答案:

答案 0 :(得分:1)

我认为它会在取消设置时更改索引,而是执行

 for($i=count($processData);$i>=0;$i--)

答案 1 :(得分:1)

PHP 5.3 +的另一种方法:

$processData = array_filter($processData,
                            function ($i) { return !$i['all_sessions_unavailable']; });

答案 2 :(得分:1)

foreach($processData as $index=>$session){
    if($session['all_sessions_unavailable']){
        unset($processData[$index]);
    }
}

为什么不使用foreach(),它可能是PHP中最好的功能之一......

此外,除非all_sessions_unavailable可以包含布尔值以外的值,否则您不必将其与精确的true匹配。