简单而愚蠢的循环,我无法想象如何做到这一点

时间:2011-09-05 23:13:45

标签: php loops

我必须迭代一个数组并显示它的项目。我必须对它进行分页,以便我可以渲染一个分页器。 paginator结构类似于:

<div class='paginator'>
    <div class="page">
        <img src="path/to/picture"/>
        <img src="path/to/picture"/>
        <img src="path/to/picture"/>
        <img src="path/to/picture"/>
    </div>
    <div class="page">
        <img src="path/to/picture"/>
        <img src="path/to/picture"/>
        <img src="path/to/picture"/>
        <img src="path/to/picture"/>
    </div>
</div>

最后,我有一个带有路径的PHP数组。我想要这样的东西:

echo "<div class='paginator'>";
for ($i = 0; $i < 3; $i++) {
   echo "<div class='page'>";
   for($j = 0; $j < 4; $j++) {
      echo "<img src='" . $arr[$i * $j] . "'/>"     
   }
   echo "</div>
}
echo "</div>";

但是,它不起作用。我正在做错误的循环,我无法弄清楚它们应该如何。

3 个答案:

答案 0 :(得分:3)

假设你的问题不仅仅是一个简单的sintax问题 $arr[$i * 4 + $j] 代替 $arr[$i * $j]
其中“4”是每行的大小。
看看这个例子

0  1  2  3 (4 elements in this row which starts from 0)
4  5  6  7 (this row starts from 4)
8  9 10 11 (this starts from 4 * 2)

每行以4(每行元素数)乘以行数(从0开始)开始。要迭代行中的每个元素,您必须添加行中元素的索引(示例中为$ j),因此:$index = $row_index * $elements_per_row + $column_index

答案 1 :(得分:1)

echo "<div class='paginator'>";
for ($i = 0; $i < 3; $i++) {
   echo "<div class='page'>";
   for($j = 0; $j < 4; $j++) {
      echo "<img src='" . $arr[$i * $j] . "'/>";
   }
   echo "</div>";
}
echo "</div>";

你忘了用分号和引号。

答案 2 :(得分:1)

您似乎试图将$i$j变量相乘,这可能不是您想要的:

echo "<img src='" . $arr[$i * $j] . "'/>"

您需要放在这里取决于$arr数组的结构。你的意思是:

$arr[$i][$j]

这适用于具有此结构的数组(仅作为示例):

$arr[0][0] = 'page 1 image 1';
$arr[0][1] = 'page 1 image 2';
//....
$arr[1][3] = 'page 2 image 4';