array(3) {
[0]=> array(2) {
["b_id"]=> string(1) "9" ["dis"]=> int(350)
}
[1]=> array(2) {
["b_id"]=> string(1) "8" ["dis"]=> int(600)
}
[2]=> array(2) { ["b_id"]=> string(1) "7" ["dis"]=> int(312)
}
}
这样的数组怎样排序也就是 dis 最小的排在前面
然后把排序好的数组 b_id 拼接成字符串 $str = "8,7,9"; 这样的
3 回答
![?](http://img1.sycdn.imooc.com/533e4c9c0001975102200220-100-100.jpg)
跃然一笑
TA贡献1826条经验 获得超6个赞
array_multisort 多维数组排序
$list=[
['b_id'=>10,'dis'=>310],
['b_id'=>20,'dis'=>350],
['b_id'=>30,'dis'=>140],
['b_id'=>40,'dis'=>330],
['b_id'=>50,'dis'=>320]
];
echo "<pre>";
$disSortArr = array_column($list, 'dis');
array_multisort($list,
SORT_DESC, SORT_NUMERIC,$disSortArr);
$bids =implode(array_column($list, 'dis'),',');
var_dump($list,$bids);
![?](http://img1.sycdn.imooc.com/545863c10001865402200220-100-100.jpg)
陪伴而非守候
TA贡献1757条经验 获得超8个赞
这个还是建议自己手动写一个二维数组的排序
function arraySort($array,$field,$type='asc')
{
$keySort=array();
foreach ($array as $key=>$value)
{
$keySort[$key]=$value[$field]; //将原数组的键值和需要比较的字段值拿出来组成新的数组
}
if($type == 'asc') asort($keySort);
if($type == 'desc') arsort($keySort);
$new=array();
foreach ($keySort as $key=>$value)
{
$new[] = $array[$key];
}
return $new; //返回排序的结果
}
这样每次传入要排序的数组和排序的字段就好
- 3 回答
- 0 关注
- 380 浏览
添加回答
举报
0/150
提交
取消