有一个数组如下

我想对其进行一个排序,按照其“sort”的值的大小进行排序,3->4->7。

解决方法如下:

1、首先介绍php的两个方法

方法一:array_column() 返回输入数组中某个单一列的值。php版本 5.5+。

参数 描述
array 必需。规定要使用的多维数组(记录集)。
column_key

必需。需要返回值的列。

可以是索引数组的列的整数索引,或者是关联数组的列的字符串键值。

该参数也可以是 NULL,此时将返回整个数组(配合 index_key 参数来重置数组键的时候,非常有用)。

index_key 可选。用作返回数组的索引/键的列。

例子一:

         $cmf_settings = array(
array (
"url" => "img/20191015/5da586020fa6b.jpg",
"alt" => "lunbo2",
"href" => "https://www.baidu.com/",
"sort" => "7"
),
array(
"url" => "img/20191018/5da9783499dec.jpg",
"alt" => "X1300",
"href" => "https://www.baidu.com/fully-automatic-pallet-wrappin/x1300-180.html",
"sort" => "3"
),
array(
"url" => "img/20191018/5da987c81f420.jpg",
"alt" => "S300",
"href" => "https://www.baidu.com/fully-automatic-pallet-wrappin/s300-170.html",
"sort" => "4"
)
); $cmf_arr = array_column($cmf_settings, 'sort');

打印$cmf_arr得到如下结果

方法二:array_multisort() 函数返回一个排序数组。您可以输入一个或多个数组。函数先对第一个数组进行排序,接着是其他数组,如果两个或多个值相同,它将对下一个数组进行排序。

array_multisort(‘数组1’, 'SORT_ASC(升序)', '数组2', '数组3', '数组4', '数组5', '数组6');

数组1:进行排序的数组。

SORT_ASC(升序):是对数组1的排序方式。

'数组2', '数组3'......:根据数组1的排序方式对'数组2', '数组3', '数组4', '数组5', '数组6'进行排序。

数组1升序排序: 第二组数据[1] => "3" 位置变成[0] => "3",那么'数组2', '数组3', '数组4', '数组5', '数组6'的第二组数据[1] => "不管是什么数据" 位置变成[0] => "不管是什么数据"。

参数 描述
array1 必需。规定数组。
sorting order 可选。规定排列顺序。可能的值:

  • SORT_ASC - 默认。按升序排列 (A-Z)。
  • SORT_DESC - 按降序排列 (Z-A)。
sorting type 可选。规定排序类型。可能的值:

  • SORT_REGULAR - 默认。把每一项按常规顺序排列(Standard ASCII,不改变类型)。
  • SORT_NUMERIC - 把每一项作为数字来处理。
  • SORT_STRING - 把每一项作为字符串来处理。
  • SORT_LOCALE_STRING - 把每一项作为字符串来处理,基于当前区域设置(可通过 setlocale() 进行更改)。
  • SORT_NATURAL - 把每一项作为字符串来处理,使用类似 natsort() 的自然排序。
  • SORT_FLAG_CASE - 可以结合(按位或)SORT_STRING 或 SORT_NATURAL 对字符串进行排序,不区分大小写。
array2 可选。规定数组。
array3 可选。规定数组。

例子二:

         $cmf_settings = array(
array (
"url" => "img/20191015/5da586020fa6b.jpg",
"alt" => "lunbo2",
"href" => "https://www.baidu.com/",
"sort" => "7"
),
array(
"url" => "img/20191018/5da9783499dec.jpg",
"alt" => "X1300",
"href" => "https://www.baidu.com/fully-automatic-pallet-wrappin/x1300-180.html",
"sort" => "3"
),
array(
"url" => "img/20191018/5da987c81f420.jpg",
"alt" => "S300",
"href" => "https://www.baidu.com/fully-automatic-pallet-wrappin/s300-170.html",
"sort" => "4"
)
);
$cmf_arr = array_column($cmf_settings, 'sort');
array_multisort($cmf_arr, SORT_ASC, $cmf_settings);

打印$cmf_settings得到如下结果,满足需求。

总结:利用 array_column() 把要排序的键值提取出来,在利用array_multisort()对数组进行排序。理解起来有点绕,不过以后的用处会很大的。

如有错误请指出,谢谢。

php数组怎么根据其中的一个值进行排序?解决方法的更多相关文章

  1. JMeter接口测试-提取动态列表最后一个值的两种方法

    前言 在用JMeter做接口测试时,我们经常会遇到,一个接口返回一个json串,在这个json串中,某个节点的值是一个列表,而且这个列表的长度是动态变化的.今天我们来学习两种提取动态列表最后一个值的两 ...

  2. IIS发布网站浏览之后看到的是文件目录 & Internal Server Error 处理程序“ExtensionlessUrlHandler-ISAPI-4.0_64bit”在其模块列表中有一个错误模块“IsapiModule” 解决方法 & App_global.asax.pduxejp_.dll”--“拒绝访问。 ”

    Q:IIS发布网站浏览之后看到的是文件目录 A:它出现了一个说到.NET4.0 更高框架什么的错误,所以我将 .NTE CRL版本由4.0改为2.0了,改为2.0后就出现了只能浏览文件目录了.改为4. ...

  3. [代码]--IIS发布网站浏览之后看到的是文件目录 & Internal Server Error 处理程序“ExtensionlessUrlHandler-ISAPI-4.0_64bit”在其模块列表中有一个错误模块“IsapiModule” 解决方法 & App_global.asax.pduxejp_.dll”--“拒绝访问。 ”

    Q:IIS发布网站浏览之后看到的是文件目录 A:它出现了一个说到.NET4.0 更高框架什么的错误,所以我将 .NTE CRL版本由4.0改为2.0了,改为2.0后就出现了只能浏览文件目录了.改为4. ...

  4. 用链表和数组实现HASH表,几种碰撞冲突解决方法

    Hash算法中要解决一个碰撞冲突的办法,后文中描述了几种解决方法.下面代码中用的是链式地址法,就是用链表和数组实现HASH表. he/*hash table max size*/ #define HA ...

  5. Jquery操作Cookie取值错误的解决方法

    使用JQuery操作cookie时 发生取的值不正确,结果发现cookie有四个不同的属性,分享下错误的原因及解决方法. 使用JQuery操作cookie时 发生取的值不正确的问题:  结果发现coo ...

  6. 浏览器后退按钮导致jquery动态添加的select option值丢失的解决方法

    监控浏览器返回功能 判断浏览器返回功能 禁用浏览器的后退按钮 JS禁止浏览器后退键 http://volunteer521.iteye.com/blog/830522/ 浏览器返回功能 判断上一页面来 ...

  7. MVC中提示错误:从客户端中检测到有潜在危险的 Request.Form 值的详细解决方法

    今天往MVC中加入了一个富文本编辑框,在提交信息的时候报了如下的错误:从客户端(Content="<EM ><STRONG ><U >这是测试这...&q ...

  8. asp.net MVC中使用Html.Checkbox提示该字符串未被识别为有效的布尔值错误的解决方法

    在asp.net MVC中使用Html.CheckBox提交后出现该字符串未被识别为有效的布尔值错误,或从类型“System.String”到类型“System.Boolean”的参数转换失败. 错误 ...

  9. 真正解决vbox不能为虚拟电脑打开一个新任务的解决方法

    今天小编电脑上出现了一个问题,如上图,经过了一个朋友的帮助终于问题解决了,解决方法: 在每一个中把 红框中打上勾号即可

随机推荐

  1. springboot 多模块项目创建

    1.File>new>project  直接点击next 2.输入groupId  .artifactId 3.选择项目保存路劲  finish 4.成功创建多模块项目的根模块 5.创建子 ...

  2. 安卓APP开发简单实例 结对编程心得

    开始说起搞APP开发,自己和小伙伴的编程水平真的很低,无从下手,只有在网上找点案列,学习着怎样开发,结对编程还是面临着许多问题的,大家的水平有所差异和编程风格不同,我们用eclipse做了一个仿微信登 ...

  3. java 简单框架的运用

    Struts Struts是一个基于Sun J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的. Struts框架可分为以下四个主要部分,其中三个就和MVC模式紧密相关:  1.模 ...

  4. Laravel 5.4 快速开发简书:

    Laravel 5.4 快速开发简书第1章 课程介绍 介绍课程的大体脉络和课程安排 第2章 Laravel 5.4介绍 本节课会带领大家介绍laravel的各个版本历史以及讨论php框架的未来发展趋势 ...

  5. 在Win10右键菜单添加校验文件Hash值命令

    把以下代码保存为reg文件导入注册表即可. Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\文件哈希校验] " ...

  6. 主动降噪技术(ANC)的前生今世--概念历史

    一 概念 假如使用一句通俗的语言来概述ANC的原理的话,那就是:通过发出与噪声相位相反,频率.振幅相同的声波与噪声干涉实现相位抵消. 使用比较正式的语言来解释就是:动降噪通过降噪系统产生与外界噪音相等 ...

  7. 2019年9月3日安卓凯立德全分辨率(路况)夏季版C3551-C7M24-3K21J25懒人包

    拷贝懒人包NaviOne文件夹到机器根目录或内存卡根目录下:安装其中的apk程序 2019凯立德C3551-C7M24-3K21J25新组合懒人包 [分辨率]:自适应 [适用系统]:Android2. ...

  8. (七十二)c#Winform自定义控件-雷达图

    前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:ht ...

  9. jvm对象内存分配

    一.jvm简单结构图 1.jvm内存对象分配整体流程: 1.类加载子系统和方法区 类加载子系统负责从文件系统或者网络中加载Class信息,加载的类信息存放于一块称为方法区的内存空间.除了类的信息外, ...

  10. Linux6.x 更换国内比较快的yum源-通用版

    ----------更换国内比较快的yum源----------- ----------163--------- cd /etc/yum.repos.d mv CentOS-Base.repo Cen ...