我如何对这个多维数组进行排序?

How can i sort this multidimensional array?

我无法对这个多维数组进行排序,我需要按 "packagenumber" 值

从低到高排序

这是我的数组:

我正在尝试使用 usort:

uasort($data, function($a, $b) {
            return strcmp($data['packagenumber'], $data['packagenumber']);
        });

尝试

usort($data, function($a, $b) {
            return $a['packagenumber'] > $b['packagenumber'];
        });

首先,您应该使用 usort,因为您不需要维护数组的索引。

那么,像这样的东西应该可以工作:

function int_compare($a, $b) {
    return $a['packagenumber'] - $b['packagenumber'];
}

usort($data, 'int_compare');

如果您经常像我一样,发现自己需要在 class 中进行这种排序,并且需要将比较函数定义为 [=18 的成员=],你可以这样称呼它:

function mainFunction(){
$array = array(
            ['id' => 5, 'name' => 'Name', 'packagenumber' => 2],
            ['id' => 6, 'name' => 'Another', 'packagenumber' => 3],
            ['id' => 7, 'name' => 'Again', 'packagenumber' => 1]);

usort($array, array($this, 'int_compare'));
}

function int_compare($a, $b) {
        return $a['packagenumber'] - $b['packagenumber'];
}

$this 在这种情况下是对包含比较函数

的 class 的引用

您可以提取一列,对其进行排序,然后对原始列进行排序:

array_multisort(array_column($data, 'packagenumber'), $data);