0
排序前
$arr = array(
  'apple' => array('weight'=>'3'),
  'orange' => array('weight'=>'5'),
  'banana' => array('weight'=>'2'),
  'tomato' => array('weight'=>'1'),
);
排序后(根据weight排序)
?

请教大家php怎么写

Dyan 235
12月3日提问

查看全部 3 个回答

0
$arr = array(
  'apple' => array('weight'=>'3'),
  'orange' => array('weight'=>'5'),
  'banana' => array('weight'=>'2'),
  'tomato' => array('weight'=>'1'),
);
$weight = array_column($arr, 'weight');
array_multisort($weight, SORT_ASC, $arr);
var_dump($arr);

推荐答案

1

已采纳
$arr = [
    ['name' => 'apple', 'weight' => '3'],
    ['name' => 'orange', 'weight' => '5'],
    ['name' => 'banana', 'weight' => '2'],
    ['name' => 'tomato', 'weight' => '1'],
];

usort($arr, function ($current, $next): int {
    return $current['weight'] > $next['weight'] ? 1 : -1;
});

var_dump($arr);
1
回复 Dyan

把 usort 换成可以保持索引关系的 uasort 就好了,多看手册。

唯一丶 · 12月3日

展开评论

推广链接