我想按数字顺序对每个项目的第二个值排序多维数组。
这是数组:
$vulc = array(
array('s',3),
array('s',5),
array('s',2)
);
我想要这个输出:
$vulc = array(
array('s',5),
array('s',3),
array('s',2)
);
我试过这个:
foreach ($vulc as $key => $row) {
$distance[$key] = $row[2];
}
array_multisort($distance, SORT_ASC, $vulc);
但不起作用:(请帮助我,不建议看到其他答案......通常其他答案太难了:(
答案 0 :(得分:2)
使用rsort()
$vulc = array(
array('s',3),
array('s',5),
array('s',2)
);
rsort($vulc);
echo "<pre>";
print_r($vulc);
<强>输出强>
Array
(
[0] => Array
(
[0] => s
[1] => 5
)
[1] => Array
(
[0] => s
[1] => 3
)
[2] => Array
(
[0] => s
[1] => 2
)
)
答案 1 :(得分:1)
使用usort功能并尝试:
function sortByOrder($a, $b) {
return $b[1] - $a[1]; // $b[1] - $a[1] because it need to be descending order
}
usort($vulc, 'sortByOrder');
输出:
Array
(
[0] => Array
(
[0] => s
[1] => 5
)
[1] => Array
(
[0] => s
[1] => 3
)
[2] => Array
(
[0] => s
[1] => 2
)
)
答案 2 :(得分:0)
您可以排序并添加&#39;排序数组:
<?php
$vulc = array(
array('s',3),
array('s',5),
array('s',2)
);
foreach ($vulc as $key => $row) {
$distance[] = $row[1];
}
array_multisort($distance, SORT_ASC, $vulc);
foreach ($distance as $row) {
$vulcOut[] = ['s', $row];
}
// $vulcOut = array(
// array('s',5),
// array('s',3),
// array('s',2)
// );