当我从不同供应商订购5种产品时,如何按$vendorid
显示数据组。
Ex:随机添加产品到购物车。
| $vendorid | $product_name |
-----------------------------
| 1 | TEST31 |
| 4 | TEST21 |
| 3 | TEST20 |
| 3 | TEST17 |
| 4 | TEST11 |
但我希望显示如下:
| $vendorid | $product_name |
-----------------------------
| 1 | TEST31 |
| 3 | TEST20 |
| 3 | TEST17 |
| 4 | TEST21 |
| 4 | TEST11 |
代码:
foreach($_SESSION["products"] as $product){
$product_name = $product["p_name"];
$vendorid = $product["p_member_id"];
$cart_box = "<li>$vendorid $product_name</li>";
}
echo $cart_box;
这给了我一个与我添加到购物车中的结果相同的输出:
| $vendorid | $product_name |
-----------------------------
| 1 | TEST31 |
| 4 | TEST21 |
| 3 | TEST20 |
| 3 | TEST17 |
| 4 | TEST11 |
答案 0 :(得分:5)
<?php
// sample data
$_SESSION["products"] = [];
$_SESSION["products"][] = ['vendorid'=>1, 'product_name'=>'TEST31' ];
$_SESSION["products"][] = ['vendorid'=>4, 'product_name'=>'TEST21' ];
$_SESSION["products"][] = ['vendorid'=>3, 'product_name'=>'TEST20' ];
$_SESSION["products"][] = ['vendorid'=>3, 'product_name'=>'TEST17' ];
$_SESSION["products"][] = ['vendorid'=>4, 'product_name'=>'TEST11' ];
// actual code
usort($_SESSION["products"], function($a, $b) {
return $a['vendorid'] - $b['vendorid'];
});
foreach( $_SESSION["products"] as $product ) {
echo '<li>',
htmlspecialchars($product['vendorid']), ' ', htmlspecialchars($product['product_name']),
"</li>\r\n";
}
打印
<li>1 TEST31</li>
<li>3 TEST17</li>
<li>3 TEST20</li>
<li>4 TEST11</li>
<li>4 TEST21</li>
排序$_SESSION["products"]
数组的位置和时间并不重要
但是如果每次添加一个新项目时都这样做,那么每次显示购物车时都不必这样做,如果(和什么时候)php获得了一些“sorted-insert-into-array”功能,你可以替换代码由此节省一些计算时间....
答案 1 :(得分:1)
尝试以下功能,它将起作用
function aasort (&$array, $key) {
$sorter=array();
$ret=array();
reset($array);
foreach ($array as $ii => $va) {
$sorter[$ii]=$va[$key];
}
asort($sorter);
foreach ($sorter as $ii => $va) {
$ret[$ii]=$array[$ii];
}
$array=$ret;
}
aasort($ _ SESSION [ “产品”], “p_member_id”);
答案 2 :(得分:0)
在查询中使用ORDER BY
在查询中升序。
例如:
ORDER BY ID ASC;