【问题标题】:Print multidimensional array data in a table columns在表格列中打印多维数组数据
【发布时间】:2020-04-02 21:49:54
【问题描述】:

我一整天都尝试了很多,但没有得到预期的输出。我想使用 PHP 在 HTML 表中打印多维数组列方式,但是当我尝试获取数据列方式时,获取数据行或获取列中的数据。

<?php
$result = array
  (
  array("Volvo",22,18),
  array("BMW",15,13),
  array("Saab",5,2),
  array("Land Rover",17,15)
  );

foreach($result as $row){
    foreach($row as $column){
            echo $column . ",<br>";
    }
    echo "</br>";
}
?>

得到这个输出:

沃尔沃
22
18

宝马
15
13

萨博
5
2

路虎
17
15

但是我怎样才能像这样以 3 列方式获取此输出列 3 数组数据,

沃尔沃 -- 宝马 -- 萨博
22 - - 15 - - 5
18 - - 13 - - 2

【问题讨论】:

标签: php html arrays html-table


【解决方案1】:

基本上,您只需要将列索引与行索引进行切换。然后像以前一样循环。所以你需要把所有的条目都检查一遍。

$result = array
  (
  array("Volvo",22,18),
  array("BMW",15,13),
  array("Saab",5,2),
  array("Land Rover",17,15)
  );

$out = array();


foreach($result as $cdx => $col)
{
    foreach($col as $idx => $val)
    {
        // swap the column index with the row index
        $out[$idx][$cdx] = $val;
    }
}

$final = "";

foreach($out as $row)
{

    foreach($row as $col)
    {
        $final .= ($col . ", ");
    }

    $final = substr($final, 0, -2);

    $final .= "\r\n";
}

$final = trim($final);

echo $final;

DEMO

【讨论】:

  • 这么多东西:D
【解决方案2】:

另一个想法可能是创建行和列,然后将implode 用于行和列:

$columns = [];
$rows = [];
foreach ($result as $row) {
    foreach($row as $key => $column) {
        $key === 0 ? $columns[] = $row[$key] : $rows[$key][] = $row[$key];
    }
}
echo implode("--", $columns) . "<br>";
foreach ($rows as $row) {
    echo implode("--", $row) . "<br>";
}

输出

Volvo--BMW--Saab--Land Rover
22--15--5--17
18--13--2--15

Php demo

【讨论】:

    【解决方案3】:

    你可以使用下一个想法:

    $ar[] = array_column($result,0);
    $ar[] = array_column($result,1);
    $ar[] = array_column($result,2);
    

    这一步可以优化为

    for($i=0;$i<count($result[0]);$i++){
        $ar[] = array_column($result,$i);
    } 
    

    那就做吧

    foreach($ar as $col){
        echo '<tr><td>'.$col[0].'</td><td>'.$col[1].'</td><td>'.$col[2].'</td><td>'.$col[3].'</td></tr>';
    }
    

    Demo

    或者加上额外的for loop,优化:

    foreach($ar as $col){
        echo '<tr>';
        for($i=0;$i<count($col);$i++){
            echo '<td>'.$col[$i].'</td>';
        }
        echo '</tr>'; 
    }
    

    Demo2

    【讨论】:

      猜你喜欢
      • 2014-06-13
      • 2018-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-21
      • 2016-07-11
      相关资源
      最近更新 更多