PHP 中 array_multisort() 可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序。关联键名保持不变,但数字键名会被重新索引。输入数组被当成一个表的列并以行来排序,第一个数组是要排序的主要数组。数组中的行(值)比较为相同的话就按照下一个输入数组中相应值的大小来排序,依此类推。
但是如果需要排序的数组是一个二维数组,需要按照数组的键值排序,如下面这个二维数组,需要按照sort键名来排序,那么array_multisort() 就无法直接实现了:
public function arrayMsort(&$data,$field)
{
$regions = array_column($data, $field);
$this->utf8_array_asort($regions);
array_multisort($regions, SORT_ASC, $data);
}
private function utf8_array_asort(&$array)
{
if (!isset($array) || !is_array($array)) {
return false;
}
foreach ($array as $k => $v) {
$array[$k] = iconv('UTF-8', 'GBK//IGNORE', $v);
}
return true;
}
$this->arrayMsort($data,SORT_ASC);
文章介绍了在PHP中,当需要对二维数组按特定键值(如sort键)进行排序时,array_multisort()函数无法直接实现,因此提供了一个自定义方法arrayMsort()结合utf8_array_asort()函数来实现。该方法首先通过array_column()获取要排序的键对应的值数组,然后使用自定义的排序函数处理排序,最后调用array_multisort()完成排序。
591

被折叠的 条评论
为什么被折叠?



