如何使foreach循环在多个列上显示项目?


How do I make a foreach loop display items on more than one column?

我试图修改一个joomla模块,我有一个小问题(这不是joomla相关的,因此不需要代码)。

我有一个foreach循环,其中有一个显示文章的代码块。只要您在管理面板中设置它,它就会重复多次。我想添加的功能,使该模块显示项目超过1列。我所需要的只是额外津贴,我想其他的我都搞定了。

基本上,我如何修改一个简单的foreach循环,使它在多个列上显示文章?

而不是

b

c

d

e

我想要这个

……d

b……e

c

如果您坚持使用表格,则可以从中间获取结果计数和工作

$half_count = floor(count($entries) / 2);
for($i=0;$i<$half_count;$i++)
{
    echo '<tr>';
    echo '<td>' . $entries[$i] . '</td>';
    echo '<td>' . (isset($entries[$half_count + $i]) ? $entries[$half_count + $i]: '') . '</td>';
    echo '</tr>';
}

这里有一个简单的方法:

php > $arr = array(1,2, 3, 4, 5, 6, 7, 8, 9, 10);
php > for ($i=0; $i<count($arr); $i+=2) { print $arr[$i] . "'t" . $arr[$i+1] . "'n"; }
1       2
3       4
5       6
7       8
9       10

据我所知,您将无法使用foreach语句,而是使用for语句。

例如:

$iterations = (count($array_of_items) % 2) ? (count($array_of_items) / 2) + 1 : count($array_of_items) / 2;
for ($i = 0; $i <= $iterations; $i++) {
if (isset($array_of_items[$i+3]))
   echo $array_of_items[$i].'........'.$array_of_items[$i+3];
else
   echo $array_of_items[$i];
}

非常简单的代码,没有这么少的信息,但可以做到这一点!

我将在for循环中创建两个文章数组,而不是在for循环中输出。然后循环遍历这些数组,在主循环之外创建列。

你的问题没有什么信息,但这里有一些你可以使用的

$arr = array("a","b","c","d","e","f");
for ($i = 0; $i<count($arr); $i++){
    echo $arr[$i]."    ". $arr[$i+3] ."'n";
    if($i == 2){ break;} //Modify 2 as more alphabets are added
}

输出
a    d
b    e
c    f

对于一般解决方案,假设一个打包数组....

function show_table($data, $columns)
{
    $items=count($data);
    $iters=$items/$columns + ($items % $columns) ? 1 : 0;
    for ($y=0; $y<$iters; $y++) {
      for ($x=0; $x<$columns; $x++) {
         $offset=$y*$columns + $x;
         if ($offset<$items) print $data[$offset] . ' ';
      }
      print "'n";
    }
}