3

简单的问题。我有一个包含 21 个元素的数组,并在一个<div>块中显示它们中的每三个。代码是这样的:

<?php
$faces= array(
  1 => 'happy',
  2 => 'sad',
  (sic)
  21 => 'angry'
);

$i = 1;
foreach ($faces as $face) {
  echo $face;
  $i++;
}

?>

问题出在这个数组没有 21 个元素时,有时它有 24 个,有时有 17 个。我如何包装每三个元素,然后单独包装其余元素?我想出了使用switchand case,但这仅在只有 21 个元素时才有效。我想我可以事先计算它们并在最后一个中关闭(即使它是一组一个元素)。

4

3 回答 3

4

你已经在这里拥有了大部分。您所缺少的只是测试您是否准备好包装。因此,在您增加之前$i,请尝试:

$i = 1;

foreach ($faces as $face)
{
    echo $face;

    if ($i % 3 == 0)
    {
        echo "<br />"; // or some other wrapping thing
    }
    $i++;
}

这将确保您每 3 个面包裹一次,将剩余部分留在最后一个单元中。

于 2012-06-29T21:06:20.030 回答
2
print '<div>';
$i = 1;
foreach ($faces as $face) {
  if ($i % 3 == 0) print '</div><div>';
  echo $face;
  $i++;
}
print '</div>';
于 2012-06-29T21:08:10.537 回答
1

我会用array_chunk. 您可以将数组分成三个一组的多维数组。如果元素的数量不是三的倍数,则最后一个元素将包含所有剩余的子元素,无论它们有多少。

于 2012-06-29T21:11:52.610 回答