Php 如何从下到下按列显示表格?
我有一个数组: 如何从表中的数组自上而下显示此数据 这应该是这样的:Php 如何从下到下按列显示表格?,php,Php,我有一个数组: 如何从表中的数组自上而下显示此数据 这应该是这样的: category1 | category 2 | category3 product33 | product1 | product65 product41 | product45 | product23 | | product423 我试过: <table> <tr> <?php foreach ($array as $ca
category1 | category 2 | category3
product33 | product1 | product65
product41 | product45 | product23
| | product423
我试过:
<table>
<tr>
<?php foreach ($array as $category): ?>
<td><?php echo $category ?></td>
<?php endforeach ?>
</tr>
//????
</table>
//????
您可以尝试以下方法:
<?php
foreach ($array as $category)
{
echo "<td>" . key($array) . "</td>";
foreach ($category as $item)
{
echo "<td>" . $item . "</td>";
}
next($array);
}
?>
看看这个简单的例子:
<?php
$data = [
'category1' => [
'product33',
'product41'
],
'category2' => [
'product1',
'product45'
],
'category3' => [
'product65',
'product23',
'product423'
],
];
$maxSize = 0;
foreach ($data as $category) {
$maxSize = max($maxSize, count($category));
}
for ($i=-1; $i<$maxSize; $i++) {
foreach ($data as $key=>$category) {
if (-1 === $i) {
echo $key . "\t";
} else {
echo isset($category[$i]) ? $category[$i] . "\t" : "\t\t";
}
}
echo "\n";
}
注意:这是为了在CLI上用于演示目的。额外的html标记只会使代码演示膨胀 我认为你的问题与 首先计算
$max\u产品
。然后打印标题(类别1、类别2等)。然后在嵌套循环中将行中的元素打印到$max_products
(您需要检查该类别是否有索引为$i
ofc的元素)
$max_products=0;
foreach($category=>$products的数组){
$current=计数($products);
如果($current>$max_产品){
$max_products=$current;
}
}?>
从上到下是什么意思?是否要在数据中显示多行?
<?php
$data = [
'category1' => [
'product33',
'product41'
],
'category2' => [
'product1',
'product45'
],
'category3' => [
'product65',
'product23',
'product423'
],
];
$maxSize = 0;
foreach ($data as $category) {
$maxSize = max($maxSize, count($category));
}
for ($i=-1; $i<$maxSize; $i++) {
foreach ($data as $key=>$category) {
if (-1 === $i) {
echo $key . "\t";
} else {
echo isset($category[$i]) ? $category[$i] . "\t" : "\t\t";
}
}
echo "\n";
}
category1 category2 category3
product33 product1 product65
product41 product45 product23
product423
$max_products = 0;
foreach($array as $category => $products){
$current = count($products);
if($current > $max_products){
$max_products = $current;
}
}?>
<table>
<thead>
<tr>
<?php
foreach( $array as $category => $products ){
echo "<th>$category</th>";
}
?>
</tr>
</thead>
<tbody>
<?php for( $i = 0; $i < $max_products; $i++ ){ ?>
<tr>
<?php
foreach( $array as $category => $products ){
if( $products[$i] ){
echo "<td>$products[$i]</td>";
} else {
echo "<td> </td>";
}
}
?>
</tr>
<?php } ?>
</tbody>
</table>