前几天在项目中碰到了一个问题,在做商城的时候,要对一个店铺里所有商品进行价格排序,而且每一种商品都拥有多个规格,要取到所有商品中所有规格的最低价和最高价,发现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是个商品集合,每一个商品带有一个id,tag是该商品的规格,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

  

PHP二维数组排序研究的更多相关文章

  1. JS二维数组排序组合

    需求是这样的:http://q.cnblogs.com/q/29093/ 这里简述一下: 现在有一个不确定长度的数组.比如:var temp=[["Fu","Hai&qu ...

  2. PHP二维数组排序(list_order)

    /** * 对二维数组进行排序 * 模拟 数据表记录按字段排序 * * <code> * @list_order($list, $get['orderKey'], $get['orderT ...

  3. PHP array_multisort() 函数详解 及 二维数组排序(模拟数据表记录按字段排序)

    一.先看最简单的情况. 有两个数组: $arr1 = array(1, 9, 5); $arr2 = array(6, 2, 4); array_multisort($arr1, $arr2); pr ...

  4. php基础篇-二维数组排序 array_multisort

    原文:php基础篇-二维数组排序 array_multisort 对2维数组或者多维数组排序是常见的问题,在php中我们有个专门的多维数组排序函数,下面简单介绍下: array_multisort(a ...

  5. PHP二维数组排序(感谢滔哥)

    滔哥原创 /* _ooOoo_ o8888888o 88" . "88 (| -_- |) O\ = /O ____/`---'\____ .' \\| |// `. / \\|| ...

  6. PHP 二维数组排序保持键名不变

    对二维数组指定的键名排序,首先大家想到的是array_multisort函数,关于array_multisort的用法我之前也写了一篇废话不多言,我们看个实例: <?php $data = ar ...

  7. 一个不错的PHP二维数组排序函数简单易用存用

    一个不错的PHP二维数组排序函数简单易用存用 传入数组,传入排序的键,传入排序顺序 public function array_sort($arr,$keys,$type='asc') { $keys ...

  8. PHP二维数组排序(感谢滔哥lvtao.net)

    滔哥原创 /* _ooOoo_ o8888888o 88" . "88 (| -_- |) O\ = /O ____/`---'\____ .' \\| |// `. / \\|| ...

  9. JS:二维数组排序和获取子级元素

    JS:二维数组排序和获取子级元素 1. 二维数组排序 1.按数值排序 var arr = [[1, 2, 3], [7, 2, 3], [3, 2, 3]]; 如果我们要按每个子数组的第一列来排序要如 ...

随机推荐

  1. billard:桌球的走位路线图解

    这些是桌球的一些基础知识,记得刚学会桌球那会儿很强烈的想找到类似图片或资料,好久都找不到,最严重的时候只要一闭上眼睛,满脑子就是桌球的路线,线路图几乎是无处不在,痛苦的是经常能理解过来的很多路线因为杆 ...

  2. Android设为系统默认的短信应用

    要设为系统默认的短信应用首先要配置一下AndroidManifest.xml文件,添加下列: <!-- BroadcastReceiver that listens for incoming S ...

  3. P1616 疯狂的采药

    P1616 疯狂的采药 题目背景 此题为NOIP2005普及组第三题的疯狂版. 此题为纪念LiYuxiang而生. 题目描述 LiYuxiang是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为 ...

  4. Java8_Lambda表达式

            从2014年java8发布到现在已经有几个年头了,现在java11都发布了.公司最近把服务器环境重新搭建了一遍,jdk版本也从7换成了8,终于可以在代码里面写Lambda表达式了.作为 ...

  5. MapReduce实现单词统计

     开发工具:IDEA mapreduce实现思路: Map阶段: a) 从HDFS的源数据文件中逐行读取数据 b) 将每一行数据切分出单词 c) 为每一个单词构造一个键值对(单词,1) d) 将键值对 ...

  6. HTML5/CSS3速成教程

    http://www.w3cfuns.com/thread-5592317-1-1.html

  7. IOS开发学习笔记020-练习总结

    自己做了一遍,现在再复习一下,总结一下. 最终效果如下         1.新建一个工程Single View Application 总体如下 不过要关闭自动布局功能 这是按下设置按钮显示的界面默认 ...

  8. sqlserver释放内存

    create procedure sp_clearmemasbegin dbcc freeproccache dbcc freesessioncache dbcc freesystemcache('a ...

  9. C#知识点<4>

    1\C# 运算符重载 您可以重定义或重载 C# 中内置的运算符.因此,程序员也可以使用用户自定义类型的运算符.重载运算符是具有特殊名称的函数,是通过关键字 operator 后跟运算符的符号来定义的. ...

  10. socket传输对象

    server public class Server{ private static int port = 8888; private static ServerSocket serverSocket ...