【问题标题】:PHP - Display 2d array as table [closed]PHP - 将二维数组显示为表格
【发布时间】:2017-02-08 22:13:31
【问题描述】:

我是 PHP 新手,无法以特定格式显示二维数组。

基本上,我知道如何正常打印二维数组,但是它看起来很乱,我已经用 foreach 尝试过,但它没有给我想要的输出。我有一个二维数组,我想打印出 5 个表格,所以如果数组中有 35 条记录,我应该打印出 7 个表格(每个表格打印 5 个条目)。

我尝试使用从 0 到 7 的 forloop(用于表格),并在 forloop 内部使用 foreach 访问数组元素,但是当我这样做时,它基本上打印了数组中的所有内容 7 次。

【问题讨论】:

  • 举例说明你做了什么以及你期望发生什么
  • 我们是否应该猜测 a) 数组是什么样子 b) 你实际上想要做什么?
  • 数组 ([18] => 数组 ([0] => 0115 [1] => Nguyen [2] => Trang Luong Minh) [24] => 数组 ([0] => 0165 [1] => Rana [2] => Shivam 数组是这种格式,但我想显示为:ID FIRST NAME LAST NAME [0] [1] [2] [3] [4] ID名字姓氏 [5] [6] 等等...其中 [i] 是每个单元格

标签: php mysql arrays


【解决方案1】:
    $cars = array
        (
        array("Volvo", 22, 18),
        array("BMW", 15, 13),
        array("Saab", 5, 2),
        array("Land Rover", 17, 15),
        array("benz", 252, 1558),
        array("tesla", 115, 193),
        array("chevy", 587, 211),
        array("ford", 13217, 115),
        array("Volvo", 22, 18),
        array("BMW", 15, 13),
        array("Saab", 5, 2),
        array("Land Rover", 17, 15),
        array("benz", 252, 1558),
        array("tesla", 115, 193),
        array("chevy", 587, 211),
        array("ford", 13217, 115),
        array("Volvo", 22, 18),
        array("BMW", 15, 13),
        array("Saab", 5, 2),
        array("Land Rover", 17, 15),
        array("benz", 252, 1558),
        array("tesla", 115, 193),
        array("chevy", 587, 211),
        array("ford", 13217, 115),
        array("Volvo", 22, 18),
        array("BMW", 15, 13),
        array("Saab", 5, 2),
        array("Land Rover", 17, 15),
        array("benz", 252, 1558),
        array("tesla", 115, 193),
        array("chevy", 587, 211),
        array("ford", 13217, 115),
        array("tesla", 115, 193),
        array("chevy", 587, 211),
        array("ford", 13217, 115),
    );

    $i = 0;
    foreach ($cars as $innerCar) {
        if ($i == 0) {
            echo "<table style='display:inline;'>";
            echo "<tbody>";
        }
        echo "<tr>";
        foreach ($innerCar as $car) {
            echo "<td>$car</td>";
        }
        echo "</tr>";
        if ($i == 5) {
            echo "</tbody>";
            echo "</table>";
            $i = 0;
        } else {
            $i++;
        }
    }

【讨论】:

  • 这是魔法???太感谢了!!我将研究这段代码以确切了解它是如何工作的,看起来每个 foreach 语句都使用第一个数组作为索引,并深入研究该数组以使用下一个数组作为索引
【解决方案2】:

如果我明白你想要做什么,这是一个解决方案:

foreach ($array as $subArray){
    foreach($subArray as $element){
        print "$element";
    }
    print "\n";
}

【讨论】:

  • 我试过了,但它不输出数组的元素,而是说“ARRAY ARRAY ARRAY ARRAY”我的数组是这样构造的:$data = array(); //从文本文件中读取数据 list($ID, $last, $first) = explode (",",$line); $data = array($ID, $last, $first); $parent[] = $数据;
  • 编辑问题来解释,我以为你有数组数组
【解决方案3】:

另一种方法是使用数组的索引和模数计算来确定将数组拆分到新表的位置:

$people = [
    [0115, 'Nguyen', 'Trang Luong Minh'],
    [0165, 'Rana', 'Shivam'],
    [0165, 'Family1', 'Given1'],
    [0165, 'Family2', 'Given2'],
    [0165, 'Family3', 'Given3'],
    [0165, 'Family4', 'Given4'],
    [0165, 'Family5', 'Given5'],
    [0165, 'Family6', 'Given6'],
    [0165, 'Family7', 'Given7'],
    [0165, 'Family8', 'Given8'],
    [0165, 'Family9', 'Given9'],
    [0165, 'Family10', 'Given10'],
  ];

$items_per_table = 5;

foreach ($people as $index => $person) {
  $item_index = $index % $items_per_table;

  if ($item_index == 0) {
    echo '<table>';
    echo '<tr><th>ID</th><th>Given Name</th><th>Family Name</th></tr>';  
  }

  echo '<tr>';
  foreach ($person as $data) {
    echo "<td>{$data}</td>";
  }
  echo '</tr>';

  if ($item_index == $items_per_table - 1 || count($people) == $index + 1) {
    echo '</table>';
  }
}

【讨论】:

    猜你喜欢
    • 2018-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-02
    • 2021-01-10
    • 2015-10-25
    • 2014-12-06
    • 1970-01-01
    相关资源
    最近更新 更多