0
点赞
收藏
分享

微信扫一扫

PHP写一个二维数组排序算法函数可以调用PHP内置函数

萧让听雪 2024-11-06 阅读 5

PHP提供了多种内置函数来对二维数组进行排序,其中array_multisort()是一个非常强大的工具,它可以基于一个或多个列对多维数组进行排序。以下是一个使用array_multisort()的示例函数,该函数可以对二维数组进行排序:

<?php  
function sort2DArrayByColumn(&$array, $columnKey, $sortOrder = SORT_ASC) {
// 使用array_column提取指定列的值
$columnValues = array_column($array, $columnKey);

// 使用array_multisort对提取的列值和原数组进行排序
array_multisort($columnValues, $sortOrder, $array);
}

// 示例二维数组
$people = [
['name' => 'Alice', 'age' => 30],
['name' => 'Bob', 'age' => 20],
['name' => 'Charlie', 'age' => 25],
];

// 调用排序函数,按'age'列升序排序
sort2DArrayByColumn($people, 'age');

// 输出排序后的数组
print_r($people);

// 如果想要降序排序,可以将$sortOrder设置为SORT_DESC
sort2DArrayByColumn($people, 'age', SORT_DESC);

// 再次输出排序后的数组
print_r($people);
?>

在这个例子中,sort2DArrayByColumn()函数接受三个参数:

  1. $array:要排序的二维数组(通过引用传递,以便直接修改原数组)。
  2. $columnKey:要基于其值进行排序的列键名。
  3. $sortOrder:排序顺序,默认为SORT_ASC(升序)。如果设置为SORT_DESC,则进行降序排序。

函数内部使用array_column()函数从二维数组中提取出指定列的值,然后使用array_multisort()函数对这些值和原数组进行排序。

注意,由于array_multisort()会修改传入的数组,因此$array参数是通过引用传递的(在函数定义中使用&符号)。这意味着函数内部对$array的任何修改都会反映到原始数组上。

举报

相关推荐

0 条评论