显示每次循环中foreach循环中的两个元素?

7

如何在每次循环中显示for each循环中的两个元素?

例如,我有这样的一个数组:

$arr = array('a', 'b', 'c', 'd','e','f');

而且想要像这样展示记录:
  a-b
  c-d
  e-f

有什么想法吗?

2
https://dev59.com/MlnUa4cB1Zd3GeqPc64R - Zahur Sh
4个回答

13

你可以使用array_chunk,它正是为这种情况而设计的,是最短且最有效的方法。

$arr = array('a', 'b', 'c', 'd','e','f');
foreach(array_chunk($arr , 2) as $val) {
    echo implode('-', $val)."\n";
}

将数组分割成指定大小的子数组。

更多详情请查看: http://php.net/manual/zh/function.array-chunk.php

演示示例:https://3v4l.org/BGNbq


3

使用for循环遍历数组。

在每次迭代中,按计数器打印当前值和当前值加一的值。

递增计数器。

<?php
$arr = array('a', 'b', 'c', 'd','e','f');
$i=0;
$len = count($arr);
for ($i=0; $i< $len; $i++) { // We could have used count($arr) 
//instead of $len. But, it will lead to 
//multiple calls to count() function causing code run slowly.
    echo "<br/>".$arr[$i] . '-' . $arr[$i+1];
  ++$i; 
}
?>

2
如果 $len%2 = 1,使用这个解决方案将会出现 Undefined offset: <faulty_offset_number> 的错误。 - dickwan
这里有多处索引自增操作($i++),可能会令人困惑。最好每次将$i增加两个例如 for ($i=0; $i< $len; $i += 2)。尽管未定义的偏移错误仍然存在问题。 - John Ellmore

1
<?php
$input_array = array('a', 'b', 'c', 'd', 'e');
print_r(array_chunk($input_array, 2));
?>

上面的例子将输出:
Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
        )

    [1] => Array
        (
            [0] => c
            [1] => d
        )

    [2] => Array
        (
            [0] => e
        )

)

0

试试这个:

<?php
  $array = array('a', 'b', 'c', 'd','e','f');
  $length = count($array);
  for ($i=0; $i< $length; $i+2) {
      echo "<br/>".$arr[$i] . '-' . $arr[$i+1]; 
  }
?>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接