1

別のループ内のループに問題があります。この状況を処理する方法がわからず、期待される結果が得られません -期待される結果が得られますが、乗算されます。

これは私のコードです:

<div id="view">
    <?php 
    for ($i = 0; $i < sizeof($user_roll_array); $i++): 
        $roll_data =& $user_roll_array[$i];

        $roll_date = $roll_data['time'];
        $roll_ids  = $roll_data['image_ids'];
        $roll_ids  = explode('|', $roll_ids);
        $roll_key  = $roll_data['key'];

        foreach ($roll_ids as $image_id):
            $image_name = $image->get_name($image_id);

    ?>
    <div class="roll-spot">
        <?php echo $image_name; ?>
    </div>
    <?php endforeach; endfor; ?>
</div>

これが$user_roll_array含まれるものです:

Array
(
    [0] => Array
        (
            [id] => 1
            [user_id] => 1
            [image_ids] => 10|9
            [time] => 1359244752
            [key] => 8O0F5k8G9Y1H4b7
        )

    [1] => Array
        (
            [id] => 2
            [user_id] => 1
            [image_ids] => 13|12|11|10|9
            [time] => 1359245133
            [key] => n9G7v49E2Q5h0j7
        )

    [2] => Array
        (
            [id] => 3
            [user_id] => 1
            [image_ids] => 13|12
            [time] => 1359285360
            [key] => 2Q0t1Z3S2r7n5f9
        )

    [3] => Array
        (
            [id] => 4
            [user_id] => 1
            [image_ids] => 10|9
            [time] => 1359285377
            [key] => 4L6w6R2r2Q0c1g9
        )

    [4] => Array
        (
            [id] => 7
            [user_id] => 1
            [image_ids] => 10|9
            [time] => 1359288800
            [key] => 4t1X9P8l9H7C1F6
        )

)

forループ内で作成した配列に基づいて、各要素を調べ、メソッド ( ) を介してその名前を取得する必要があります$image->get_name($id)。次に、これらの名前を以下で使用する必要があります。

5 行が返されることを期待していますが、 13行が返され、名前が数回重複しています。

誰かがこれを修正する方法を説明できれば、私は問題を理解し、将来同様の問題が発生するのを防ぐことができます.

どうもありがとう。

4

2 に答える 2

2

13 の結果が得られる理由は、最上位の反復が 5 つありますが、ループしているサブ反復 (ID) が 13 あるためです。

5 回の反復だけを実行したい場合は、それらの中でサブループを実行するべきではありません。これはあなたを混乱させているあなたのコードの一部です:

<? foreach ($roll_ids as $image_id): ?>

   <? $image_name = $image->get_name($image_id); ?>
   <div class="roll-spot">
       <?php echo $image_name; ?>
   </div>

<?php endforeach;?>

この foreachはそれ自体がメイン ループ内にあり、アクセスできる各 ID の div をエコーし​​ます。メイン アレイのライフ サイクルでは、これが 13 回発生します。重複が表示される理由は、他の要素と同じ ID を含む最上位の配列要素があるためです。

于 2013-01-27T14:44:06.723 に答える
0

アンパサンドを削除します

$roll_data =& $user_roll_array[$i];
于 2013-01-27T13:56:05.260 に答える