像PHP一样从表中的数组缩进值

时间:2018-01-31 10:20:54

标签: php

我有一个像:

这样的数组
$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 )
           ) 

2 个答案:

答案 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);

在线查看:https://eval.in/945787

答案 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='';
}

<强>演示 enter image description here