php排序函数array_mulitsort

1.概念
array_multisort() 函数对多个数组或多维数组进行排序。
参数中的数组被当成一个表的列并以行来进行排序 - 这类似 SQL 的 ORDER BY 子句的功能。第一个数组是要排序的主要数组。数组中的行(值)比较为相同的话,就会按照下一个输入数组中相应值的大小进行排序,依此类推。
第一个参数是数组,随后的每一个参数可能是数组,也可能是下面的排序顺序标志(排序标志用于更改默认的排列顺序)之一:
SORT_ASC - 默认,按升序排列。(A-Z)
SORT_DESC - 按降序排列。(Z-A)
2.例子

请将二维数组按照name的长度进行重新排序,按照顺序将id赋值(从1开始)。

数组为

$arr = array(
    array('id'=>0,'name'=>"aaaaaaaaa"),
    array('id'=>0,'name'=>"1212121"),
    array('id'=>0,'name'=>"acdd"),
    array('id'=>0,'name'=>"123"),
    array('id'=>0,'name'=>"1"),
    array('id'=>0,'name'=>"fdsafdsafdsafd"),
    array('id'=>0,'name'=>"dddddddddd")
);

源代码如下

$arr = array(
    array('id'=>0,'name'=>"aaaaaaaaa"),
    array('id'=>0,'name'=>"1212121"),
    array('id'=>0,'name'=>"acdd"),
    array('id'=>0,'name'=>"123"),
    array('id'=>0,'name'=>"1"),
    array('id'=>0,'name'=>"fdsafdsafdsafd"),
    array('id'=>0,'name'=>"dddddddddd")
);
//新定义一个数组,用来存储要排序数组中name的长度
foreach ($arr as $item) {
    $arr2[] = strlen($item['name']);
}
//按着name的长度进行排序
array_multisort($arr2,$arr);
//将id重新赋值
foreach ($arr as $k=>$v) {
    $arr[$k]["id"] = $k+1;
}
//格式化输出
echo "<pre>";
var_dump($arr);
echo "</pre>";




猜你喜欢

转载自blog.csdn.net/u013252047/article/details/79460994