php 二维数组按照某列排序

本文介绍了一种在PHP中对多维数组进行排序的方法,通过提取特定列的值作为排序依据,并保持原始数组结构不变。提供了完整的代码示例,演示了如何按子数组中的某个字段对整个数组进行升序排序。

思路:

1.将某列的数据和索引放到一个数组"$temp"中

 

2.排列"$temp"数组

 

3.根据此时的索引读取原先的数组

 

 

php代码如下:

 

<?php
function array_sort($arr,$flag,$order)
{
     foreach($arr as $key=>$value)
    {
         $temp[$key]= $value[$flag];
    }
    if($order=="ASC")
   {
         asort($temp);//升序排序临时组成的数组
   }
   if($order=="DESC")
   {
         asort($temp,SORT_NUMERIC);
         arsort($temp,SORT_NUMERIC);//反转
   }
   foreach($temp as $temp_key=>$temp_value)
  {
        $new_arr[$temp_key]= $arr[$temp_key];//读出数据
   }
   return $new_arr;
}

 

//例子
$arr=array("冰冰"=>array("语文"=>85,"数学"=>95,"英语"=>90),"琪琪"=>array("语文"=>92,"数学"=>65,"英语"=>70),
     "小王"=>array("语文"=>90,"数学"=>95,"英语"=>90));
$sort_arr=array_sort($arr,"语文","ASC");//按照语文成绩升序排序
echo "<pre>";
print_r($sort_arr);
echo "</pre>";
?>

 

结果:

Array
(
    [冰冰] => Array
        (
            [语文] => 85
            [数学] => 95
            [英语] => 90
        )

    [小王] => Array
        (
            [语文] => 90
            [数学] => 95
            [英语] => 90
        )

    [琪琪] => Array
        (
            [语文] => 92
            [数学] => 65
            [英语] => 70
        )

)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值