php如何实现二维数组排序
时间 : 2023-02-15 17:20:01声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性
PHP语言可以通过把二维数组转换成一维数组来实现二维数组的排序,从而实现二维数组中指定字段的排序效果。排序可以使用sort()、arsort()、asort()、ksort()、krsort()函数等,其中sort()函数用于以升序来排序,arsort()用于以降序来排序,asort()用于根据作为键的值排序,ksort()用于根据作为键的值升序排序,krsort()用于根据作为键的值降序排序。
例如有一个二维的数组array,其中的每个元素都是一个数组,如下所示:
$array = array(
array("id" => 8, "name" => "凤姐", "age" => 30, "height" => 162),
array("id" => 10, "name" => "美美", "age" => 32, "height" => 170),
array("id" => 3, "name" => "小强", "age" => 25, "height" => 168),
);
我们可以使用sort()函数将这个数组按age字段从小到大排序:
$age = array();
foreach($array as $key => $value)
{
$age[$key] = $value['age'];
}
array_multisort($age, SORT_ASC, $array);
该函数的第一个参数$age表示排序的字段,第二个参数SORT_ASC表示升序排序,第三个参数表示需要排序的数组($array)。
排序后,二维数组$array将按age字段从小到大排序,结果如下:
Array
(
[0] => Array
(
[id] => 3
[name] => 小强
[age] => 25
[height] => 168
)
[1] => Array
(
[id] => 8
[name] => 凤姐
[age] => 30
[height] => 162
)
[2] => Array
(
[id] => 10
[name] => 美美
[age] => 32
[height] => 170
)
)
以上代码将二维数组实现指定字段的排序效果,其实 PHP 中的排序函数还支持多个字段的排序,可以根据需要添加的键值个数,
PHP中使用array_multisort函数实现二维数组的排序,array_multisort函数可以根据键名或键值对多个数组或多维数组进行排序,并保持索引关联。
以下是一维数组的排序实例:
$arr=array(55,22,1,56,89);
array_multisort($arr);
上面的代码将对$arr进行排序,排序结果如下:
$arr=[1,22,55,56,89];
对二维数组进行排序时,可以选择按其中一列排序或多列排序,可以使用array_multisort函数:
$arr= array(
array('name'=>'zhangsan','age'=>20),
array('name'=>'lisi','age'=>25),
array('name'=>'wangwu','age'=>18)
);
array_multisort($arr);
//按照$arr列中的“name”键排序
$arr = array_column($arr,'name');
array_multisort($arr,SORT_DESC,$arr);
//按照$arr列中的“age”键排序
$age=array_column($arr,'age');
array_multisort($age,SORT_ASC,$arr);
//先以“age”升序,再以“name”降序排序
array_multisort($age,SORT_ASC,$arr,SORT_DESC);
上面的代码将按照数组$arr中的age或name键进行排序,排序结果如下:
$arr= array(
array('name'=>'wangwu','age'=>18),
array('name'=>'zhangsan','age'=>20),
array('name'=>'lisi','age'=>25)
);
由此可见,array_multisort函数对于实现二维数组的排序非常有效,使用起来也十分简单。当二维数组排序,一般需要先定义每个数组的键值,然后使用array_column函数将指定的键作为一维数组,最后使用array_multisort函数把全部的数组值进行排序即可。
https/SSL证书广告优选IDC>>
推荐主题模板更多>>
推荐文章