经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » PHP » 查看文章
php数组怎么根据其中的一个值进行排序?解决方法
来源:cnblogs  作者:Black_King_Bar  时间:2019/10/24 12:55:04  对本文有异议

有一个数组如下

 

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

解决方法如下:

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

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

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

必需。需要返回值的列。

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

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

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


例子一:

  1. 1 $cmf_settings = array(
  2. 2 array (
  3. 3 "url" => "img/20191015/5da586020fa6b.jpg",
  4. 4 "alt" => "lunbo2",
  5. 5 "href" => "https://www.baidu.com/",
  6. 6 "sort" => "7"
  7. 7 ),
  8. 8 array(
  9. 9 "url" => "img/20191018/5da9783499dec.jpg",
  10. 10 "alt" => "X1300",
  11. 11 "href" => "https://www.baidu.com/fully-automatic-pallet-wrappin/x1300-180.html",
  12. 12 "sort" => "3"
  13. 13 ),
  14. 14 array(
  15. 15 "url" => "img/20191018/5da987c81f420.jpg",
  16. 16 "alt" => "S300",
  17. 17 "href" => "https://www.baidu.com/fully-automatic-pallet-wrappin/s300-170.html",
  18. 18 "sort" => "4"
  19. 19 )
  20. 20 );
  21. 21
  22. 22 $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 可选。规定数组。

 

 例子二:

  1. 1 $cmf_settings = array(
  2. 2 array (
  3. 3 "url" => "img/20191015/5da586020fa6b.jpg",
  4. 4 "alt" => "lunbo2",
  5. 5 "href" => "https://www.baidu.com/",
  6. 6 "sort" => "7"
  7. 7 ),
  8. 8 array(
  9. 9 "url" => "img/20191018/5da9783499dec.jpg",
  10. 10 "alt" => "X1300",
  11. 11 "href" => "https://www.baidu.com/fully-automatic-pallet-wrappin/x1300-180.html",
  12. 12 "sort" => "3"
  13. 13 ),
  14. 14 array(
  15. 15 "url" => "img/20191018/5da987c81f420.jpg",
  16. 16 "alt" => "S300",
  17. 17 "href" => "https://www.baidu.com/fully-automatic-pallet-wrappin/s300-170.html",
  18. 18 "sort" => "4"
  19. 19 )
  20. 20 );
  21. 22 $cmf_arr = array_column($cmf_settings, 'sort');
  22. 24 array_multisort($cmf_arr, SORT_ASC, $cmf_settings);

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

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

如有错误请指出,谢谢。

 

原文链接:http://www.cnblogs.com/lzijiangg/p/11731298.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号