PHP二维数组排序研究

前几天在项目中碰到了一个问题,在做商城的时候,要对一个店铺里所有商品进行价格排序,而且每一种商品都拥有多个规格,要取到所有商品中所有规格的最低价和最高价,发现PHP有很友好的函数帮助我们进行筛选。

使用array_multisort函数进行二维数组排序:

数组格式如下:

$goods = array(
    0 => array(
        “id”=>1,
        “tag”=>array(
            “price”=>”10”,
            “old_price”=>”20”
         )
    ),
    1 => array(
        “id”=>2,
        “tag”=>array(
            “price”=>”30”,
            “old_price”=>”100”
        )
    ),
    2 => array(
        “id”=>3,
        “tag”=>array(
            “price”=>”25”,
            “old_price”=>”70”
        )
    ),
    3 => array(
        “id”=>4,
        “tag”=>array(
            “price”=>”15”,
            “old_price”=>”50”
        )
    )
);            

  

$goods是个商品集合,每一个商品带有一个idtag是该商品的规格,price是商品的售价,old_price是商品的原价,先在要对商品的售价进行排序,并取出最高售价和最低售价。

 

$sort_arr = array();

foreach($goods as $key => &$val){

    foreach($val[‘tag’ as $k => $v]{

        $val[‘goods_arr’][] = array(“price”=>$v[“price”],”old_price”=>$v[“old_price”]);

    })

    foreach($val[‘goods_arr’] as $v){

        $sort_arr[] = $v[‘price’];

    }

    array_multisort($sort_arr_sort,SORT_ASC,$val['goods_arr']);
    $val['price_min'] = $val['goods_arr'][0]['price'];
    $val['old_price_min'] = $val['goods_arr'][0][‘old_price’];
				
    array_multisort($discount_sort,SORT_DESC,$val['goods_arr']);
    $val['price_max'] = $val['goods_arr'][0]['price'];
    $val['old_price_max'] = $val['goods_arr'][0]['old_price'];

}

 

  

这样就取到了该店铺中商品集合里每一种商品的最低售价和最高售价,在做一个店铺展示的时候也会得到每件商品的价格区间了。

 

By as

 

  

posted @ 2018-08-31 11:16  WidgetBox  阅读(189)  评论(0编辑  收藏  举报