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