0

私は次の配列構造を持っています:

  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されます(この場合、違いが生じた場合は、配列全体の最後の配列になります)

私が間違っていることはありますか?

4

3 に答える 3

1

設定を解除するとインデックスが変更されると思うので、代わりに

 for($i=count($processData);$i>=0;$i--)
于 2012-05-13T23:22:00.133 に答える
1

PHP 5.3以降の代替アプローチ:

$processData = array_filter($processData,
                            function ($i) { return !$i['all_sessions_unavailable']; });
于 2012-05-13T23:24:57.137 に答える
1
foreach($processData as $index=>$session){
    if($session['all_sessions_unavailable']){
        unset($processData[$index]);
    }
}

なぜあなたはただ使ってみませんかforeach()、それはおそらくPHPの最高の機能の1つです...

また、all_sessions_unavailableブール値以外の値を含めることができない限り、正確な。と照合する必要はありませんtrue

于 2012-05-13T23:25:36.247 に答える