php 二位数组排序

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"; 这样的

阅读 2.6k
3 个回答
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);

建议多看 php 手册
这种问题,最好自行 google/百度 解决,可以提高自己搜索问题答案的能力。

分享一个刚才看到的趣图:

clipboard.png

这个还是建议自己手动写一个二维数组的排序

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;                                                                                              //返回排序的结果
}

这样每次传入要排序的数组和排序的字段就好

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题