展开

如何给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) }
}
 

相关推荐

猜你可能喜欢

点击加载更多