PHP 二维数组根据某个字段排序

PHP 二维数组根据某个字段排序PHP 二维数组根据某个字段排序

大家好,又见面了,我是你们的朋友全栈君。

数据:
$data[] = array(‘customer_name’ => ‘小李’, ‘money’ => 12, ‘distance’ => 2, ‘address’ => ‘长安街C坊’);
$data[] = array(‘customer_name’ => ‘王晓’, ‘money’ => 30, ‘distance’ => 10, ‘address’ => ‘北大街30号’);
$data[] = array(‘customer_name’ => ‘赵小雅’, ‘money’ => 89, ‘distance’ => 6, ‘address’ => ‘解放路恒基大厦A座’);
$data[] = array(‘customer_name’ => ‘小月’, ‘money’ => 150, ‘distance’ => 5, ‘address’ => ‘天桥十字东400米’);
$data[] = array(‘customer_name’ => ‘李亮亮’, ‘money’ => 45, ‘distance’ => 26, ‘address’ => ‘天山西路198弄’);
$data[] = array(‘customer_name’ => ‘董娟’, ‘money’ => 67, ‘distance’ => 17, ‘address’ => ‘新大南路2号’);

方法一:

function arraySort($array,$keys,$sort='asc') { 
   
    $newArr = $valArr = array();
    foreach ($array as $key=>$value) { 
   
        $valArr[$key] = $value[$keys];
    }
    ($sort == 'asc') ?  asort($valArr) : arsort($valArr);
    reset($valArr);
    foreach($valArr as $key=>$value) { 
   
        $newArr[$key] = $array[$key];
    }
    return $newArr;
}

方法二:

/** * 二维数组根据某个字段排序 * @param array $array 要排序的数组 * @param string $keys 要排序的键字段 * @param string $sort 排序类型 SORT_ASC SORT_DESC * @return array 排序后的数组 */
function arraySort($array, $keys, $sort = SORT_DESC) { 
   
    $keysValue = [];
    foreach ($array as $k => $v) { 
   
        $keysValue[$k] = $v[$keys];
    }
    array_multisort($keysValue, $sort, $array);
    return $array;
}

# 按距离降序排序
$a = arraySort($data, 'distance', SORT_DESC);
print_r($a);
# 按money升序排序
$b = arraySort($data, 'money', SORT_ASC);
print_r($b);
Array
(
    [0] => Array
        (
            [customer_name] => 李亮亮
            [money] => 45
            [distance] => 26
            [address] => 天山西路198)

    [1] => Array
        (
            [customer_name] => 董娟
            [money] => 67
            [distance] => 17
            [address] => 新大南路2)

扩展:

定义和用法
reset() 函数将内部指针指向数组中的第一个元素,并输出。
current() – 返回数组中的当前元素的值。
end() – 将内部指针指向数组中的最后一个元素,并输出。
next() – 将内部指针指向数组中的下一个元素,并输出。
prev() – 将内部指针指向数组中的上一个元素,并输出。
each() – 返回当前元素的键名和键值,并将内部指针向前移动。

sort 对数组的值按照升序排列(rsort降序),不保留原始的键
ksort 对数组的键按照升序排列(krsort降序) 保留键值关系
asort 对数组的值按照升序排列(arsort降序),保留键值关系

array_multisort
  • 排序顺序标志:

    SORT_ASC – 按照上升顺序排序
    SORT_DESC – 按照下降顺序排序

  • 排序类型标志:

    SORT_REGULAR – 将项目按照通常方法比较
    SORT_NUMERIC – 将项目按照数值比较
    SORT_STRING – 将项目按照字符串比较
    每个数组之后不能指定两个同类的排序标志。每个数组后指定的排序标志仅对该数组有效 – 在此之前为默认值 SORT_ASC 和 SORT_REGULAR。

$ar = array(
    array("b10", 'c11', 101, 100, "a"),
    array(1, 2, "2", 9, 5)
);
array_multisort($ar[0], SORT_ASC, SORT_STRING, $ar[1], SORT_NUMERIC, SORT_DESC);
print_r($ar);
Array
(
    [0] => Array
        (
            [0] => 100
            [1] => 101
            [2] => a
            [3] => b10
            [4] => c11
        )

    [1] => Array
        (
            [0] => 9
            [1] => 2
            [2] => 5
            [3] => 1
            [4] => 2
        )

)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/105808.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • [USACO12JAN]视频游戏的连击Video Game Combos「建议收藏」

    很早之前就做过啦补一下题解F(i,j)前i个的字符为j的匹配注意end要累加#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<queue>usingnam…

  • linux工具箱_docker ps命令

    linux工具箱_docker ps命令1.gdb调试利器GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。对于一名Linux下工作的c++程序员,gdb是必不可少的工具;1.1.启动gdb对C/C++程序的调试,需要在编译前就加上-g选项:$g++-ghello.cpp-ohello调试可执行文件:$gdbprogram也就是你的执行文件,一般在当前目录下。调试core文件(core是程序非法执行后coredump后产生的文件):$gdb$gdb

  • 2018年又传喜报!热烈祝贺王家林大师大数据经典著作《Spark SQL大数据实例开发教程》 畅销书籍 出版上市![通俗易懂]

    2018年又传喜报!热烈祝贺王家林大师大数据经典著作《Spark SQL大数据实例开发教程》 畅销书籍 出版上市![通俗易懂]2018年又传喜报!热烈祝贺王家林大师大数据经典著作《SparkSQL大数据实例开发教程》畅销书籍出版上市!作者:王家林段智华 条码书号:9787111591979出版日期:2018/3/1出版社:机械工业出版社丛书名:大数据科学丛书定价:¥59.00        SparkSQL是Spark生态环境中核心和基础的组件,是掌握Spark的关键所在。本书完全从企业级开发的角度出…

  • matlab 折线图 配色

    matlab 折线图 配色首先根据互补色原理,选矩形四个角的颜色为主色。其次根据matlabRGB颜色对照表MatlabRGB颜色对照表(0-1之间取值)选取颜色这里我选的是DodgerBlue4[0.06275,0.30588,0.5451]Purple[0.62745,0.12549,0.94118]DarkOrange[1,0.54902,0]Gold[1,0.84314,0]画的图长这样…

  • 如何删除织梦系统power by dedecms

    如何删除织梦系统power by dedecms很多织梦系统底部会自带powerbydedecms,这个powerbydedecms是什么意思呢?这个powerby是织梦系统版权信息,但是织梦系统是开源免费的,所以今天小编就和大家说说如

  • pycharm常用快捷键总结

    pycharm常用快捷键总结工欲善其事,必先利其器。Python开发利器Pycharm常用快捷键以及配置如下,相信有了这些快捷键,你的开发会事半功倍!一常用快捷键编辑类:Ctrl+D复制选定的区域或行Ctrl+Y删除选定的行Ctrl+Alt+L代码格式化Ctrl+Alt+O优化导入(去掉用不到的包导入)Ctrl+鼠标简介/进入代码定义Ctrl+/行注释、取消注释C…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号