php二维数组根据指定字段排序

 PHP基础  2022-12-13  admin  932  1258

php二维数组根据指定字段排序

方法一:

/**
 * 二维数组排序
 * @param array $arr 待排序的二维数组
 * @param string $key 排序的字段
 * @param string $type 排序类型: asc desc
 * @return array
 */
function arraySort(array $arr, string $key, $type = 'asc')
{
    $key_values = [];
    foreach ($arr as $k => $v) {
        $key_values[$k] = $v[$key];
    }
    if ($type == 'asc') {
        asort($key_values);
    } else {
        arsort($key_values);
    }
    reset($key_values);
    $new_array = [];
    foreach ($key_values as $k => $v) {
        $new_array[$k] = $arr[$k];
    }
    return $new_array;
}

方法二:

/**
 * 二维数组排序
 * @param array $arr 待排序的二维数组
 * @param string $key 排序的字段
 * @param string $type 排序类型: asc desc
 */
function arraySort2(array &$arr, string $key, $type = 'asc')
{
    /*$key_values = [];
    foreach ($arr as $k => $v) {
        $key_values[$k] = $v[$key];
    }*/
    $key_values = array_column($arr, $key);
    $sort = $type == 'asc' ? SORT_ASC : SORT_DESC;
    array_multisort($key_values, $sort, $arr);
    
    return $arr
}

方法三:

/**
 * 通过自定义方法排序
 * @param $arr
 * @param $key
 * @param $type
 * @return mixed
 */
function sortArray($arr, $key, $type = 'asc')
{
    // 通过自定义方法排序
    usort($arr, function ($a, $b) use ($key, $type) {
        if ($type == 'desc') {
            return -strcmp($a[$key], $b[$key]);
        }
        return strcmp($a[$key], $b[$key]);
    });

    return $arr;
}


测试:

$arr_test = [];
$str = implode('', array_merge(range('a', 'z'), range('A', 'Z'), range('0', '9')));
for ($i = 0; $i <= 10; $i++) {
    $arr_test[$i]['name'] = substr(str_shuffle($str), 0, rand(3, 10));
    $arr_test[$i]['age'] = rand(1, 100);
}

print_r($arr_test);
$arr_result = arraySort($arr_test, 'age');
print_r($arr_result);

arraySort2($arr_test, 'age');
print_r($arr_test);

如果文章对您有帮助,点击下方的广告,支持一下作者吧!

转载必须注明出处:

php二维数组根据指定字段排序 —— code.cent123.com

相关推荐


Elasticsearch 简单的搜索设置优化,分词搜索和关键词搜索同时检索

Elasticsearch 简单的搜索设置优化,分词搜索和关键词搜索同时检索

js 数组对象根据指定字段排序

js 数组对象根据指定字段排序

阿里巴巴java开发手册MySQL 数据库开发规范

阿里巴巴java开发手册MySQL 数据库开发规范

redis 操作方法大全

&lt;?php /*1.Connection*/ $redis=newRedis(); $redis-&gt;connect(&#39;127.0.0.1&#39;,6379,1);//短链接,本地host,端口为6379,超过1秒放弃链接 $redis-&gt;open(&#39;127.0.0.1&#39;,6379,1);//短链接(同上) $redis-&gt;pconnect