PHP Foreach 显示相同的值

标签 php mysql

如何按$vendorid 分组显示数据,当我从不同供应商订购 5 种产品时。

例如:随机添加产品到购物车。

| $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     |

最佳答案

<?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”功能,您可以替换代码这样可以节省一些计算时间....

另请参阅:http://docs.php.net/manual/en/function.usort.php

关于PHP Foreach 显示相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34691655/

相关文章:

javascript - 谷歌地图在ajax上成功

php - Redis as unique atomic id generator - Web 应用程序避免竞争条件的线程安全方式

php - Zend 调试器不会加载

mysql - 显示一个表的 FULLTEXT 索引列

php - 通过 PHP 表单更新 MySQL 条目

php - 服务器丢失 "ldap.so"

javascript - Chart.js 不使用 mySQL 数据库中的数据呈现图表

mysql - 带有 "LIMIT 1"的 MySQL SELECT 查询是否可能返回一个集合而不是单个值?

php - 加入 - 语法错误

php - 如何附加 MYSQL JSON