如何给php复杂关联数组按某个值进行排序

发布于 2022-08-01 12:38:07      浏览 296

如何给php复杂关联数组按某个值进行排序

asort和arsort函数是对关联数组分别进行升序和降序处理。

适用环境:

型号:台式机
系统:win10
版本:php 5.6.21

问题解析:

1、 asort()和arsort()
asort和arsort函数是对关联数组分别进行升序和降序处理。案例
根据以下数组的mysort值进行排序
<?php
$arr = array(
   array( "name"=>"张三", "mysort"=>1 ),
   array( "name"=>"李四", "mysort"=>5 ),
   array( "name"=>"王五", "mysort"=>3 )
);
asort($arr);
var_dump($arr);
?>
输出
array(3) {
[0]=> array(2) { ["name"]=> string(6) "张三" ["mysort"]=> int(1) }
[1]=> array(2) { ["name"]=> string(6) "李四" ["mysort"]=> int(5) }
[2]=> array(2) { ["name"]=> string(6) "王五" ["mysort"]=> int(3) }
}

从以上输出的情况来看,asort函数无法直接对关联数组按mysort值进行排序。
如需实现按mysort排序,思路是可以先取出mysort值和对应的键值做排序,最后通过键值重新获取数组。

<?php
$arr = array(
   array( "name"=>"张三", "mysort"=>1 ),
   array( "name"=>"李四", "mysort"=>5 ),
   array( "name"=>"王五", "mysort"=>3 )
);
setSort();
var_dump($arr);

function setSort()
{
    global $arr;
    $myorder = array();
    $cid     = array();
    foreach( $arr as $k=>$v )
    {
        $myorder[] = array('mysort'=>$v['mysort'],'key'=>$k);
    }
    asort($myorder); // 对$myorder 数组升序排序
    foreach( $myorder as $k=>$v)
    {
        $cid[] = $arr[ $v['key'] ];
    }
    $arr = $cid;
}

?>
输出
array(3) {
[0]=> array(2) { ["name"]=> string(6) "张三" ["mysort"]=> int(1) }
[1]=> array(2) { ["name"]=> string(6) "王五" ["mysort"]=> int(3) }
[2]=> array(2) { ["name"]=> string(6) "李四" ["mysort"]=> int(5) }
}
 

上一篇:怎么删除php数组中的某些值 下一篇:php怎么排序数组

相关推荐

  • CAD版本如何向下兼容转换CAD图纸的格式
    CAD版本如何向下兼容转换CAD图纸的格式 1.按【Ctrl+O】打开选择窗口,选择要打开的cad图纸素材。 2.输入【OP】命令并回车,打开cad选项对话框。 3.选择【打开和保存】选项卡……

    CAD基础 发布于 2022-11-11 00:33:35 浏览 478

  • sqlite如何替换换行符
    sqlite如何替换换行符 在SQLit数据库中,换行符使用的是“X'0a'”表示,其中数字0和字母a需要用单引号括起来。

    MYSQL 发布于 2022-11-11 00:30:44 浏览 417

  • excel如何截取单元格字符串长度
    excel如何截取单元格字符串长度 1.left 函数用于从左边开始向右截取字符。 2.right 函数用于从右边开始向左截取字符。 3.mid 函数用于截取字符串中间的字符。……

    EXCEL基础 发布于 2022-10-25 17:27:22 浏览 522

  • 如何启用excel开发工具
    如何启用excel开发工具 1.在打开的excel表格中,点击左上角【文件】菜单。 2.在文件菜单中,点击打开左下角【选项】。 3.在Excel选项对话框中,在左侧选择【自……

    EXCEL基础 发布于 2022-10-25 17:16:35 浏览 341

  • 如何删除excel加载项
    如何删除excel加载项 1.在打开的excel表格中,点击左上角【文件】菜单。 2.在文件菜单中,点击打开左下角【选项】。 3.在Excel选项对话框中,在左侧选择【加……

    EXCEL基础 发布于 2022-10-25 17:15:22 浏览 584

  • Excel如何使用md5加密
    Excel如何使用md5加密 1.选择顶部【开发工具】菜单,点击【Excel加载项】工具按钮。 2.在加载项对话框中,选择【浏览】按钮。 3.在浏览窗口选择下载好的宏……

    EXCEL基础 发布于 2022-10-25 17:11:02 浏览 489

  • 如何删除取消ppt动画
    如何删除取消ppt动画 1.在打开的ppt中,选择【动画】菜单,点击【动画窗格】工具按钮。 2.选中要删除动画的页数,在右侧动画窗格窗口中选择所有动画并右键选……

    PPT基础 发布于 2022-09-16 13:12:24 浏览 592

  • php如何将数组转换成字符串
    php如何将数组转换成字符串 1.implode函数将数组转为字符串。 2.json_encode函数将数组转为JSON格式的字符串。

    PHP基础 发布于 2022-08-16 16:28:34 浏览 336

  • excel依次排序号
    excel依次排序号 1.点击Excel表格右上角的排序和筛选。 2.在弹出来的选项中选择升序将数字从小到大排列。 3.选择降序即可将数字从大到小排列。 4.……

    EXCEL基础 发布于 2022-08-15 09:46:52 浏览 484

  • php怎么替换字符串
    php怎么替换字符串 1.str_replace函数是比较常用的替换函数,str_replace 区分大小写。 2.str_ireplace和str_replace的用法相同,只是str_ireplace不区……

    PHP基础 发布于 2022-08-13 03:20:06 浏览 377