0

私は2つの配列を持っています:

$item の日付は基本的に次のようになります。

Array ( 
    [0] => 2012-05-28 
    [1] => 2012-05-29 
    [2] => 2012-05-30 
    [3] => 2012-05-31 
    [4] => 2012-06-01 
)

次のようになり $m['details']ます。

Array (
    [details] => Array (
        [0] => Array (
            [Id] => 20003
            [MTimeInt] => 0
            [Date] => 2012-05-28
            [Name] => item
        )
        [1] => Array (
            [Id] => 20004
            [MTimeInt] => 1
            [Date] => 2012-05-29
            [Name] => item2
        )
        [2] => Array (
            [Id] => 20005
            [MealTimeInt] => 0
            [Date] => 2012-05-29
            [Name] => item3
        )
    )
)

//start of main bit
<?php foreach($m['details'] as $item) { ?>
<?php if($item['MTimeInt'] == 0 && $item['Date'] == $itemDates[0]) { ?> 
<?php echo $item['Name']; ?> <br>
<?php } ?>
<?php if($item['MTimeInt'] == 0 && $item['Date'] == $itemDates[1]) { ?> 
<?php echo $item['Name']; ?>
<?php } ?>
<?php } ?>

foreachループが1回繰り返された後に壊れるという問題があります。if ステートメントが実行された後、すべてのアイテムがチェックされるまで (リストの次のインデックス/アイテムに移動することによって) ループを続行する必要があります。

以前、あまり成功しなかった while ループを使用しました。

なぜこれが起こっているのですか?

ありがとう

4

4 に答える 4

1

要素が1つ$m['details']しかないので、よく見てください。

多分あなたに繰り返して欲しいです$m['details']['details']か?

于 2012-05-31T15:03:02.010 に答える
1

あなたが示したコードが正しければ、$m['details'] 内に別の ['details'] があり、1 回の反復を説明します。

于 2012-05-31T15:01:24.737 に答える
0

単一の配列項目で foreach を呼び出しています。$m で単独で呼び出すとどうなるかを確認し、必要な項目を if で区切ります。PCに着いたら、答えを適切に展開します

于 2012-05-31T15:05:37.773 に答える
0

正しい配列を反復処理していません。あなたの場合、配列にはアイテムが 1 つしかありません。$m['details']['details'] を試してください。

于 2012-05-31T15:06:46.820 に答える