JoeHandsome 2019-08-28 10:00:43 517次浏览 4条评论 1 0 0
/**
 * 二维数组根据字段进行排序
 * @params array $array 需要排序的数组
 * @params string $field 排序的字段
 * @params string $sort 排序顺序标志 SORT_DESC 降序;SORT_ASC 升序
 */
public static function arraySequence($array, $field, $sort = 'SORT_ASC') 
{
    if (count($array)>0) {
        $arrSort = array();
        foreach ($array as $uniqid => $row) {
            foreach ($row as $key => $value) {
                $arrSort[$key][$uniqid] = $value;
            }
        }
        array_multisort($arrSort[$field], constant($sort), $array);
    }
    return $array;
}
亿速云
  • 评论于 2019-08-28 11:26 举报

    写的不好,不喜勿喷

  • 评论于 2019-09-30 09:22 举报

    //$array是需要排序的数组,$field是排序的字段名
    $items = array_column($array,$field);
    array_multisort($items,SORT_DESC,$array);
    使用这两个数组函数更简洁

    觉得很赞
  • 评论于 2019-10-15 17:14 举报

    如果你是用的Yii,我感觉用这个也是可以的。

    $data = [
        ['age' => 30, 'name' => 'Alexander'],
        ['age' => 30, 'name' => 'Brian'],
        ['age' => 19, 'name' => 'Barney'],
    ];
    ArrayHelper::multisort($data, ['age', 'name'], [SORT_ASC, SORT_DESC]);
    
    1 条回复
    评论于 2019-10-21 09:30 回复

    是,我这个算法只是一个粗略的写法

    觉得很赞
  • 评论于 2019-11-25 15:22 举报

    usort 写好比较大小的函数 传过去就可以
    usort($data, function($a, $b) {return strcmp($a['name'], $b['name']);})

您需要登录后才可以评论。登录 | 立即注册