微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 从MySQL水平加载数据到表

我正在从MySQL数据库加载一些数据,它看起来像这样:

| Gray |  S  |
| Gray |  M  |
| Gray |  L  |
| Red  |  S  |
| Red  |  M  |
| Red  |  L  |

我想像这样水平地将数据加载到我的表中,按颜色分组:

| Gray |  S  |  M  |  L  |  XL  |
| Red  |  S  |  M  |  L  |  XL  |

这是我的代码

<table>
<?PHP foreach($products as $product) {?>
    <tr>
    <td><?PHP echo $product['color'];?></td>
    <td><?PHP echo $product['size'];?></td>
    </tr>       
<?PHP   }
?>      
</table>

问题:如何将数据加载到我的表中,每行按颜色分组?我可以不用单独的MySQL查询吗?

解决方法:

一点点的手动迭代将成为你的朋友……

$DatabaseResult = [ ['Gray','S'],['Gray','M'],['Gray','L'],['Red','S'],['Red','M'],['Red','L'] ];

$Grouped = array_fill_keys( array_unique( array_column( $DatabaseResult, 0 ) ), array() );

foreach( $DatabaseResult as $row )
{
  $Grouped[ $row[0] ][] = $row[1];
}

print_r( $Grouped );

//Array
//(
//    [Gray] => Array
//        (
//            [0] => S
//            [1] => M
//            [2] => L
//        )
//
//    [Red] => Array
//        (
//            [0] => S
//            [1] => M
//            [2] => L
//        )
//)

然后你会创建两个循环,外部是你的“颜色”行,内部是你的“大小”列

<table border="1">
  <?PHP foreach( $Grouped as $colour => $sizes ) {?>
    <tr>
      <td><?PHP echo $colour;?></td>
      </td>
      <?PHP foreach($sizes as $size) {?>
        <td><?PHP echo $size;?></td>
      <?PHP } ?>
    </tr>
  <?PHP } ?>
</table>

此外,如果您需要打印可用性的大小图表,您可以这样做……

$Products = [
  ['color'=>'Gray','size'=>'S','quantity'=>2],
  ['color'=>'Gray','size'=>'M','quantity'=>4],
  ['color'=>'Gray','size'=>'L','quantity'=>7],
  ['color'=>'Red','size'=>'S','quantity'=>8],
  ['color'=>'Red','size'=>'M','quantity'=>6],
  ['color'=>'Red','size'=>'XXL','quantity'=>1],
];

// Helper function to locate products from the array
function SearchProductArray( $products, $color, $size )
{
  foreach( $products as $product )
  {
    if( $product[ 'color' ] == $color and $product[ 'size' ] == $size )
    {
      return $product;
    }
  }
  return false;
}

// Locate all the unique Values
$Colours = array_unique( array_column( $Products, 'color' ) );
$Sizes = ['SS','S','M','L','XL','XXL'];

?>

<table border="1">
  <tr>
    <td>Colour</td>
    <?PHP foreach( $Sizes as $Size ) {?>
      <td><?PHP echo $Size;?></td>
    <?PHP } ?>
  </tr>
  <?PHP foreach( $Colours as $Colour ) {?>
    <tr>
      <td><?PHP echo $Colour;?></td>
      <?PHP foreach( $Sizes as $Size ) { $Product = SearchProductArray( $Products, $Colour, $Size ); ?>
        <td><?PHP echo ( $Product ) ? $Product['quantity'] : '&nbsp'; ?></td>
      <?PHP } ?>
    </tr>
  <?PHP } ?>
</table>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐