原有数组,根据键a的大小对数组$arr进行排序
$arr = [
['a'=>19, 'b'=>10],
['a'=>12, 'b'=>12],
['a'=>13, 'b'=>13],
['a'=>21, 'b'=>21],
['a'=>6, 'b'=>6],
['a'=>7, 'b'=>7],
];
开发思路:
1、获取所有指定列的值,且保持原有key; 2、对获取的指定列的值进行排序,且保持原有key; 3、获取重排后的数组的key; 4、重置原有数组;
//二维数组排序, $arr是数据,$keys是排序的健值,$order是排序规则,0是升序,1是降序
function array_sort ($arr, $keys, $order = 0)
{
if (!is_array($arr)) {
return false;
}
//1、获取所有指定列的值,且保持原有key;
$keysvalue = array();
foreach ($arr as $key => $val) {
$keysvalue[$key] = $val[$keys];
}
//2、对获取的指定列的值进行排序,且保持原有key
if ($order == 0) {
asort($keysvalue);
} else {
arsort($keysvalue);
}
reset($keysvalue);
//3、获取重排后的数组的key
foreach ($keysvalue as $key => $vals) {
$keysort[$key] = $key;
}
//4、重置原有数组
$new_array = array();
foreach ($keysort as $key => $val) {
$new_array[] = $arr[$val];
}
return $new_array;
}
$arr = [
['a' => 19, 'b' => 10],
['a' => 12, 'b' => 12],
['a' => 13, 'b' => 13],
['a' => 21, 'b' => 21],
['a' => 6, 'b' => 6],
['a' => 7, 'b' => 7],
];
echo '排序前:<br/>';
print_r($arr);
echo '<br/>排序后:<br/>';
print_r(array_sort($arr, 'a', 0));
关注快乐程序员公众号,每日分享一点小知识。爱编程,爱生活!