为了账号安全,请及时绑定邮箱和手机立即绑定

php 二位数组排序

php 二位数组排序

PHP
侃侃无极 2019-03-13 06:12:11
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 回答

?
跃然一笑

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);
查看完整回答
反对 回复 2019-03-18
?
陪伴而非守候

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

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

查看完整回答
反对 回复 2019-03-18
  • 3 回答
  • 0 关注
  • 371 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信