简单的问题。我有一个包含 21 个元素的数组,并在一个<div>
块中显示其中的每三个元素。代码是这样的:
<?php
$faces= array(
1 => 'happy',
2 => 'sad',
(sic)
21 => 'angry'
);
$i = 1;
foreach ($faces as $face) {
echo $face;
$i++;
}
?>
问题在于当这个数组没有 21 个元素时,有时它会得到 24 个,有时它会得到 17 个。我如何包裹其中的三个,其余的单独包裹?我想出了使用 switch
和 case
,但这仅在只有 21 个元素时才有效。我想我可以事先计算它们并在最后一个中关闭(即使它是一个元素的组)。
你已经在这里有了大部分。你缺少的只是测试你是否准备好包装的东西。因此,在递增$i
之前,请尝试:
$i = 1;
foreach ($faces as $face)
{
echo $face;
if ($i % 3 == 0)
{
echo "<br />"; // or some other wrapping thing
}
$i++;
}
这将确保您每 3 个面包裹一次,将剩余部分留在最终单元中。
print '<div>';
$i = 1;
foreach ($faces as $face) {
if ($i % 3 == 0) print '</div><div>';
echo $face;
$i++;
}
print '</div>';
我会使用array_chunk
. 您可以将数组拆分为三个一组的多维数组。 如果元素数不是 3 的倍数,则最后一个元素将包含所有剩余的子元素,无论它们有多少。