使用 array_multisort()函数对多个数组或多维数组进行排序的函数,正在研究数组排序、多维数组排序的朋友可以看看。
函数 bool array_multisort ( array &$arr [,mixed $arg = SORT_ASC [,mixed $arg = SORT_REGULAR [,mixed $...]]] )
参数说明: 函数对多个数组或多维数组进行排序
第一个参数是数组,随后的每一个参数可能是数组,也可能是下面的排序顺序标志 SORT_ASC - 默认,按升序排列 SORT_DESC - 按降序排列 随后可以指定排序的类型 SORT_REGULAR - 默认。将每一项按常规顺序排列。 SORT_NUMERIC - 将每一项按数字顺序排列。 SORT_STRING - 将每一项按字母顺序排列。 例:
代码如下: $arr1 = array('10',11,100,'a'); $arr2 = array(1,2,3,'2',5); array_multisort($arr1,$arr2); ?>
结果为: $arr1 Array ( [0] => 10 [1] => a [2] => 11 [3] => 100 [4] => 100 ) # '10'在与11,100比较时转换为整数10,小于其他三个数 # '10'在于'a'比较时作为字符串,其第一个字符'1'ascii码值为49小于‘a'(ascii值为97),所以‘10'为最小元素 # 'a'在于其他三个数字比较时,转换为整数0,小于其他三个数 $arr2 Array ( [0] => 1 [1] => 5 [2] => 2 [3] => 2 [4] => 3 ) # $arr2元素1与$arr1元素'10'位置对应,所以排在[0]位置 # $arr1[2] => 100,$arr1[3] => 100分别对应$arr2元素3,'2'。3大于'2',所以与2对应的$arr1[2] => 100排序后的下标为3,与3对应的$arr1[3] => 100排序的下标为4 总结---------- 1.参与排序的数组元素数保持一致 2.排序数组元素位置对应如,‘10' => 1,11 => 2 3.后边的数组在前边数组的顺序的基础上进行排序 4.前边的数组如遇相等的元素则比较后边的数组 下边就是使用的实例,手册上的例子不列了,就我自己工作中的几个。 工作中碰到最多的可能就是二维数组了,想试试三维数组,但是想想还是算了。
代码如下: header('Content-Type: text/html; charset=utf-8'); echo ' '; //原始数组格式 $array = array( 'key1' => array( 'item1' => '65', 'item2' => '35', 'item3' => '84', ), 'key2' => array( 'item1' => '24', 'key3' => array( 'item1' => '38', 'item3' => '45', ); //要排序的键 //按照数组中的 item1进行排序 //你也可以换成item2 $sort = 'item1'; foreach($array as $k => $v) { $newArr[$k] = $v[$sort]; } //这个函数如果执行正确他会直接改变原数组键值的顺序 //如果执行失败,那么他会返回 bool(false) array_multisort($newArr,SORT_DESC,$array); var_dump($array); //---------------------排序后的数组打印效果 开始-------------------- array(3) { ["key1"]=> array(3) { ["item1"]=> string(2) "65" ["item2"]=> string(2) "35" ["item3"]=> string(2) "84" } ["key3"]=> array(2) { ["item1"]=> string(2) "38" ["item3"]=> string(2) "45" } ["key2"]=> array(1) { ["item1"]=> string(2) "24" } } //---------------------排序后的数组打印效果 结束---------------------
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|