array_multisort 使用记录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了array_multisort 使用记录相关的知识,希望对你有一定的参考价值。

手册介绍的着实蛮难理解的:

array_multisort() 可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序。 

关联( string )键名保持不变,但数字键名会被重新索引。 

网上看了蛮多例子,现在总结记录下来备用。
??
??

一、一维数组排序

$a=array("Dog","Cat","Horse","Bear","Zebra");
array_multisort($a);
print_r($a);

??
结果:
??

Array(
[0] => Bear
[1] => Cat
[2] => Dog
[3] => Horse
[4] => Zebra)

上面就是按照普通的字母升序排列(A,B,C,D...),没什么好讲的
??

二、多个一维数组排序

$ar1 = array(22,12,3);
$ar2 = array(1,3,7);
array_multisort($ar1, $ar2);
echo ‘<pre>‘;
print_r($ar1);
print_r($ar2);

??
结果:
??

Array(
    [0] => 3
    [1] => 12
    [2] => 22
)
Array
(
    [0] => 7
    [1] => 3
    [2] => 1
)    

$ar1和$ar2的数据可以看成一个表 如下:
技术分享图片

$ar1和$ar2分别为列名,然后如sql语句一样select * from table order by $ar1 asc ,$ar2 asc 排序即可
??

三、多维数组排序

通常我们从数据库取出来的

$data=array(
    array(‘id‘ => 67, ‘score‘ => 20,‘name‘=>‘小明‘),
    array(‘id‘ => 86, ‘score‘ => 10,‘name‘=>‘小红‘),
    array(‘id‘ => 85, ‘score‘ => 60,‘name‘=>‘小花‘)
); 

foreach ($data as $key => $row) {
    $id[$key]  = $row[‘id‘];
    $score[$key] = $row[‘score‘];
}
array_multisort($id, SORT_ASC, $data);
echo "<pre>";
print_r($data);

??
结果:
??

Array
    (
        [0] => Array
        (
            [id] => 67
            [score] => 2
            [name] => 小明
        )

        [1] => Array
        (
            [id] => 85
            [score] => 6
            [name] => 小花
        )
        [2] => Array
        (
            [id] => 86
            [score] => 1
            [name] => 小红
        )
    )

此时,把id,score,name看成列名称如图:
技术分享图片

如果想按照某个字段排序 ,先循环获取到所有该字段的值形成一个数组,然后按照该字段排序即可。然后如sql语句一样select * from table order by $id asc 排序即可

以上是关于array_multisort 使用记录的主要内容,如果未能解决你的问题,请参考以下文章

介绍array_multisort方法

array_multisort():数组大小不一致

关于php排序函数 array_multisort 使用一个函数对另一个函数排序

CSP核心代码片段记录

二维,多维数组排序array_multisort()函数的使用

Sphinx - 在代码块片段中使用省略号 (...)