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;?>