如何在三列中打印数组的值?

时间:2011-06-24 07:17:32

标签: php arrays math

我需要此输出..

1 3 5
2 4 6

我想使用数组(1,2,3,4,5,6)之类的数组函数。如果我编辑这个数组像数组(1,2,3)意味着输出需要显示像

1 2 3

这个概念只有最大3列。如果我们给出数组(1,2,3,4,5)意味着输出应该是

1 3 5 
2 4

假设我们将给出数组(1,2,3,4,5,6,7,8,9)意味着o / p是

1 4 7
2 5 8
3 6 9

仅限最多3列。取决于给定的输入,行将使用3列创建。这是可能的PHP吗?Am做小研究&数组函数的开发。我认为这是可能的。你会帮助我吗? 有关更多信息:I / p:array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15) O / P:

1  6   11 
2  7   12 
3  8   13 
4  9   14 
5  10  15

2 个答案:

答案 0 :(得分:1)

使用array_chunk()函数:http://www.php.net/manual/en/function.array-chunk.php

$example_array = array('a', 'b', 'c', 'd', 'e');
$chunked_array = array_chunk($example_array, 3));

$ chunked_array将是一个包含2个子数组的数组:array(array(a,b,c),array(d,e))

答案 1 :(得分:1)

获取行数就像 ceiling(每行的元素/元素总数)一样简单。您需要做的就是将元素从一个一维数组复制到另一个二维数组。一种可能的方法:

<?php
$input = array(
    1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13
);
$col = 3;
$row = ceil(count($input) / $col);
$output = array();
while(count($input)){
    $output[] = array_splice($input, 0, $row);
}
for($i = 0; $i < $row; $i++) {
    $temp = array();
    for($j = 0; $j < $col; $j++) {
        if (isset($output[$j][$i])) {
            $temp[] = $output[$j][$i];
        }
    }
    echo implode(", ", $temp) . "\n";
}

输出

1, 6, 11
2, 7, 12
3, 8, 13
4, 9
5, 10