Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从下到下按列显示表格?_Php - Fatal编程技术网

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>&nbsp;</td>";
                    }

                }
            ?>

        </tr>
        <?php } ?>

    </tbody>
</table>