我想知道是否可以在回显时对组中的数据进行分类。
例如,如果我有一个不同手机的桌子,并按品牌分开,即苹果,三星等,我希望数据显示带有手机品牌的标题,并且下面会有手机类型。< / p>
苹果
iphone 4
iphone 4s
iphone 5
三星
Galaxy Note 2
Galaxy S4
<div id="wrap">
<table>
<thead>
<tr>
<th><?php echo phones['brand']; ?></th>
<th>Price</th>
</tr>
</thead>
<tbody>
<?php foreach($phones as $phone): ?>
<tr>
<td><?php echo $phone['name']); ?>
<br>
<ul>
<li><?php echo $phone['price']); ?></li>
</ul>
</td>
<td>$<?php echo $phone['released']); ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
这是我到目前为止所做的,对不起等待。
答案 0 :(得分:0)
这是一个非常基本的例子。假设您将手机放在这样的阵列中:
$phones = [
['Apple', 'iphone 4'],
['Apple','iphone 4s'],
['Apple','iphone 5'],
['Samsung','Galaxy Note 2'],
['Samsung','Galaxy S4']
];
您只需在输出品牌时跟踪品牌,每当品牌与之前的品牌不同时,请为其输出标题。
$previous_brand = null;
foreach ($phones as $phone) {
list($brand, $model) = $phone;
if ($brand != $previous_brand) { // check if current brand is different than previous
echo "<h3>$brand</h3>";
}
echo "$model<br>";
$previous_brand = $brand; // current brand becomes previous brand for next iteration
}
我保持HTML最小化,这样就不会分散工作部分的注意力。显然你可以添加你需要的任何标记。
这种方法的重要之处在于它完全取决于你的数组按品牌排序,所以如果它来自你的数据库ORDER BY brand
,或者它是其它来源,use one of the various PHP sort functions首先按顺序获取它。
答案 1 :(得分:0)
首先做
$phonesByBrand = [];
foreach ($phones as $phone)
{
$phonesByBrand[$phone['brand']][] = $phone;
}
现在在你看来,你可以做到
<?php foreach($phonesByBrand as $brand => $phones): ?>
<div id="wrap">
<table>
<thead>
<tr>
<th><?php echo $brand; ?></th>
<th>Price</th>
</tr>
</thead>
<tbody>
<?php foreach($phones as $phone): ?>
<tr>
<td>
<?php echo $phone['name']); ?>
<br>
<ul>
<li><?php echo $phone['price']); ?></li>
</ul>
</td>
<td>
$<?php echo $phone['released']); ?>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
<?php endforeach; ?>