当前位置:  开发笔记 > 编程语言 > 正文

PHP Foreach显示具有相同的值

如何解决《PHPForeach显示具有相同的值》经验,为你挑选了1个好方法。

$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 = "
  • $vendorid $product_name
  • "; } echo $cart_box;

    这给了我一个与我添加到购物车中的结果相同的输出:

    | $vendorid | $product_name |
    -----------------------------
    |     1     |    TEST31     |
    |     4     |    TEST21     |
    |     3     |    TEST20     |
    |     3     |    TEST17     |
    |     4     |    TEST11     |
    

    VolkerK.. 5

    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 '
  • ', htmlspecialchars($product['vendorid']), ' ', htmlspecialchars($product['product_name']), "
  • \r\n"; }

    版画

  • 1 TEST31
  • 3 TEST17
  • 3 TEST20
  • 4 TEST11
  • 4 TEST21
  • 排序$_SESSION["products"]数组的位置和时间并不重要.
    但是如果每次添加一个新项目时都这样做,那么每次显示购物车时都不需要这样做,如果(和什么时候)php获得了一些"sorted-insert-into-array"功能,你可以替换代码由此节省一些计算时间....

    另见:http://docs.php.net/manual/en/function.usort.php



    1> VolkerK..:
    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 '
  • ', htmlspecialchars($product['vendorid']), ' ', htmlspecialchars($product['product_name']), "
  • \r\n"; }

    版画

  • 1 TEST31
  • 3 TEST17
  • 3 TEST20
  • 4 TEST11
  • 4 TEST21
  • 排序$_SESSION["products"]数组的位置和时间并不重要.
    但是如果每次添加一个新项目时都这样做,那么每次显示购物车时都不需要这样做,如果(和什么时候)php获得了一些"sorted-insert-into-array"功能,你可以替换代码由此节省一些计算时间....

    另见:http://docs.php.net/manual/en/function.usort.php

    推荐阅读
    云聪京初瑞子_617
    这个屌丝很懒,什么也没留下!
    DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
    Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有