我如何对这个多维数组进行排序?
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);
我无法对这个多维数组进行排序,我需要按 "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
在这种情况下是对包含比较函数
高
您可以提取一列,对其进行排序,然后对原始列进行排序:
array_multisort(array_column($data, 'packagenumber'), $data);