我有以下数组结构:
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
,恰好是整个数组中的最后一个数组,如果这有任何区别的话)
我有什么问题吗?
答案 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
匹配。