我一整天都试了很多次,但没有达到预期的产量。我希望使用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
发布于 2019-12-09 19:00:22
你可以用下一个想法:
$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>';
}或者使用附加的for loop,优化:
foreach($ar as $col){
echo '<tr>';
for($i=0;$i<count($col);$i++){
echo '<td>'.$col[$i].'</td>';
}
echo '</tr>';
}发布于 2019-12-09 19:05:34
基本上,您只需要将列索引与行索引切换。然后像你已经做的那样循环通过。所以你需要检查所有的条目两次。
$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;演示
发布于 2019-12-09 19:08:47
另一个想法可以是创建行和列,然后对行和列使用内爆:
$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--15https://stackoverflow.com/questions/59254860
复制相似问题