我有一个像:
这样的数组$array = array(
0 => "A",
1 => "B",
2 => "C",
3 => "D",
4 => "E",
5 => "F",
6 => "G",
7 => "H",
);
最大长度$array
可以是9,因此max是index = 8
,min是0(数组中至少有1个元素)。
我要在高度有限的TCPDF盒子中缩进这个列表,通过一些测试,我看到它可以支持最多3行。但是这个框很大,所以当数组长度大于3时,其他元素需要在第一列的侧面对齐,如:
A D G
B E H
C F
我不能使用X,Y协调,因为我在TCPDF中使用writeHTML方法。
我需要创建3个字符串,如:
$line1 = "A D G";
$line2 = "B E H";
$line3 = "C F";
从我的数组中创建这3个变量的最佳方法是什么?
更新:使用suggest方法array_chunk不是我的解决方案因为我的目的我想收到一个像这样的数组:
Array ( [0] => Array (
[0] => A
[1] => D
[2] => G
)
[1] => Array (
[0] => B
[1] => E
[2] => H
)
[2] => Array (
[0] => C
[1] => F )
)
答案 0 :(得分:1)
我认为for
循环可以解决OP的问题。这是使用PHP数组函数的另一种可能的解决方案:
<?php
$array = array(
0 => "A",
1 => "B",
2 => "C",
3 => "D",
4 => "E",
5 => "F",
6 => "G",
7 => "H",
);
$cols = 3;
$array = array_chunk($array, $cols);
$results = array_map(function($index) use ($array) {
return array_column($array, $index);
}, range(0, $cols - 1));
var_dump($results);
答案 1 :(得分:1)
<?php
$array = array(
0 => "A",
1 => "B",
2 => "C",
3 => "D",
4 => "E",
5 => "F",
6 => "G",
7 => "H",
);
$array_chunk = array_chunk($array, 3,false);
$line = '';
foreach ($array_chunk as $chunk_key => $chunk_value) {
$line = '"';
foreach ($chunk_value as $key => $value) {
$line.=$value." ";
}
$line = "$" . "line" . ($chunk_key+1) . " = " . rtrim($line, " ") . '"' . "<br/>";
echo $line;
$line='';
}