如何像mysql一样排序数组

min*_*004 3 php mysql arrays

如何排序与数据库数据相同的数组?

我要求谷歌分析数据,数据是一个大型数组,我想从我的本地数据库加入数组与其他一些字段,然后我再次扩展大数组.现在我想对使用我的sql的大数组进行排序,如下所示:

select * from ga_table where ...
select * from ga_table order by age
select * from ga_table group by name
Run Code Online (Sandbox Code Playgroud)

我的阵列现在就像:

$arr=array(
    'header'=>array('name','age','money'),
    'values'=>array(
        array('jimmy',20,30),
        array('tina',18,12),
        array('darcy',19,50),
    )
);
Run Code Online (Sandbox Code Playgroud)

但是现在我有一个大型数组而不是db表,那么如何对数组进行排序? 在此输入图像描述

mam*_*dan 7

你可以尝试array_multisort:http://php.net/manual/en/function.array-multisort.php

foreach ($arr['values'] as $key => $row) {
    $name[$key]  = $row[0];
    $age[$key] = $row[1];
    $money[$key] = $row[3];
}
Run Code Online (Sandbox Code Playgroud)

现在,如果您想在ASC中按名称排序,您可以:

array_multisort($name, SORT_ASC, $arr['values']);
Run Code Online (Sandbox Code Playgroud)

或者通过名称DESC:

array_multisort($name, SORT_DESC, $arr['values']);
Run Code Online (Sandbox Code Playgroud)

或年龄ASC:

array_multisort($age, SORT_ASC, $arr['values']);
Run Code Online (Sandbox Code Playgroud)

或年龄DESC和名称ASC

array_multisort($age, SORT_DESC, $name, SORT_ASC, $arr['values']);
Run Code Online (Sandbox Code Playgroud)