php二维数组排序方法(array_multisort usort)


在PHP中,处理二维数组的排序时,可以使用`array_multisort()`或`usort()`函数,但两者的使用场景略有不同。下面分别给出这两个函数的示例用法。

### 使用`array_multisort()`

`array_multisort()`函数可以对多个数组或多维数组进行排序。如果你想要根据二维数组的某个特定列进行排序,可以这样做:


// 假设我们有一个二维数组,想要根据第二列的值进行排序
$data = [
    [1, 300, 'apple'],
    [4, 100, 'banana'],
    [2, 200, 'orange']
];

// 提取出用于排序的列
$column = array_column($data, 1); // 假设我们按第二列排序

// 使用array_multisort()进行排序
array_multisort($column, SORT_ASC, $data);

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

注意:`array_multisort()`会改变原数组的顺序。

### 使用`usort()`

`usort()`函数允许你提供一个自定义的比较函数来对数组进行排序。这在需要根据复杂逻辑或多列对二维数组进行排序时非常有用。


// 假设我们有一个二维数组,想要根据第二列的值进行排序
$data = [
    [1, 300, 'apple'],
    [4, 100, 'banana'],
    [2, 200, 'orange']
];

// 自定义比较函数
function compare($a, $b) {
    if ($a[1] == $b[1]) {
        return 0;
    }
    return ($a[1] < $b[1]) ? -1 : 1;
}

// 使用usort()进行排序
usort($data, 'compare');

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

在这个例子中,`compare`函数比较了数组中每个元素的第二列(索引为1的列),并根据比较结果对数组进行了排序。

选择`array_multisort()`还是`usort()`取决于你的具体需求。如果你需要根据数组的多个列进行排序,或者你的排序逻辑非常简单,那么`array_multisort()`可能是一个更好的选择。如果你的排序逻辑比较复杂,或者你需要根据数组中的元素执行自定义比较,那么`usort()`可能更合适。