【发布时间】:2021-05-10 08:11:41
【问题描述】:
我有以下从数据库调用的关联数组:
Array
(
[0] => Array
(
[id] => 81
[book_sku] => BokFoxME
[book_name] => BokFoxME
[book_price] => 123.4
[b_weight] => 123
[f_width] =>
[f_length] =>
[post_time] => 2021-02-05 04:02:30
[origin] => book
)
[1] => Array
(
[id] => 234
[book_sku] => TESTDVD
[book_name] => TESTDVD
[book_price] => 323
[b_weight] => 12
[f_width] =>
[f_length] =>
[post_time] => 2021-02-02 00:23:04
[origin] => dvd
)
[3] => Array
(
[id] => 41
[book_sku] => Мебель
[book_name] => Мебель
[book_price] => 21
[b_weight] => 21
[f_width] => 21x
[f_length] => 21
[post_time] => 2021-01-31 21:16:52
[origin] => furniture
)
)
数据库中有三个表(DVD、书籍、家具),其中包含将添加新产品的不同列字段。我加入了UNION ALL,以便按时间戳排序(以便新产品出现在产品列表中的第一位)。
好吧,我正在获取按时间戳排序的数据,但是在将其输出到 HTML 页面时出现了困难。
这是我在html 上显示数据的代码,但我不知道如何显示每个产品的描述。
<?php
// $dvds = array_filter($data_dvd, function ($item) {
// return $item['origin'] === 'dvd';
// });
foreach((array)$data_dvd as $prod){
?>
<!-- Fetching DVD -->
<div class="card" style="width: 12rem; height: 12rem;">
<div class="card-body">
<label class="checkbox-inline">
<input name="box[]" type="checkbox" value="<?php echo $prod["id"];?>">
</label>
<br>
<div class="cardt text-center">
<p class="card-title"><b><?php echo $prod["book_sku"];?></b></p>
<p class=""><?php echo $prod["book_name"]; ?></p>
<p class=""><?php echo $prod["book_price"]; ?>$</p>
<!-- the problem occurs with this part of the code -->
<p>Size: <?php echo $prod["b_weight"]; ?> MB </p>
<p>Size: <?php echo $book["b_weight"]; ?> Weight </p>
<p>Dimension:<br><small> <?php echo $prod["b_weight"]; ?> x <?php echo $prod["f_width"]; ?> x <?php echo $prod["f_length"]; ?></small></p>
</div>
</div>
</div>
<?php
}
?>
也就是说,DVD 产品应显示描述“MB”,书籍应显示“重量”,家具应显示“尺寸”。但目前我遇到了以下混乱:
产品必须显示在盒子中,每个产品都有自己的产品描述。同时不会通过时间戳破坏产品的显示。如下例所示:
由于我使用的是UNION,因此数组中的键名对于所有产品都是相同的,这使得在输出时调用特定产品变得更加困难。
如何解决这种情况,在不破坏时间戳的情况下,按照产品描述正确显示产品?
【问题讨论】:
-
基于
origin的值的switch语句有什么问题?
标签: php mysql associative-array