Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Foreach内循环并发症_Php_Loops_For Loop_Foreach_Nested - Fatal编程技术网

Php Foreach内循环并发症

Php Foreach内循环并发症,php,loops,for-loop,foreach,nested,Php,Loops,For Loop,Foreach,Nested,我在另一个循环中遇到问题。我不知道如何处理这种情况,也没有得到预期的结果-我得到了预期的结果,但成倍增加了 这是我的代码: <div id="view"> <?php for ($i = 0; $i < sizeof($user_roll_array); $i++): $roll_data =& $user_roll_array[$i]; $roll_date = $roll_data['time'];

我在另一个循环中遇到问题。我不知道如何处理这种情况,也没有得到预期的结果-我得到了预期的结果,但成倍增加了

这是我的代码:

<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>
基于我在for循环中创建的数组,我需要遍历每个元素并通过一个方法(
$image->get_name($id)
)获取其名称。然后我需要使用下面这些名称

我希望返回5行,但我得到13行,并且名称重复了几次

如果有人能解释如何解决这个问题,我会理解这个问题,并防止将来类似的问题发生


非常感谢。

拆下中的符号和

$roll_data =& $user_roll_array[$i];

您得到13个结果的原因是,尽管有5个顶级迭代,但有13个子迭代(ID)您正在循环

如果您只希望发生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。

$user\u roll\u数组的内容是什么?为什么不使用foreach循环而不是for循环?@flec这真的很重要吗?我改为foreach,一切都一样——所以基本上你没有回答我的问题。hohner的回答几乎解释了你看到的行为,它可能仍然不是你想要的行为,但如果你想修复它,你必须更清楚地说明你想要的输出是什么。您是否只希望显示“唯一”图像id?这得到了相同的结果。
<? foreach ($roll_ids as $image_id): ?>

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

<?php endforeach;?>