我在另一个循环中遇到问题。我不知道如何处理这种情况,我没有得到预期的结果 - 我得到了我的预期结果但是增加了。
这是我的代码:
<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 行,而且名称会重复几次。
如果有人可以解释如何解决这个问题,我会理解这个问题并防止将来出现类似的问题。
非常感谢。
答案 0 :(得分:2)
你得到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。
答案 1 :(得分:0)
删除
中的&符号$roll_data =& $user_roll_array[$i];