ViVOX9苹果6s关机充电显示图边上有个图怎么回事

PHP 二维数组根据某个字段排序的具体实现
字体:[ ] 类型:转载 时间:
从两个不同的表中获取各自的4条数据,然后整合(array_merge)成一个数组,再根据数据的创建时间降序排序取前4条
本文记录的要实现的功能类似于 MySQL 中的 ORDER BY,上个项目中有遇到这样的一个需求。 要求:从两个不同的表中获取各自的4条数据,然后整合(array_merge)成一个数组,再根据数据的创建时间降序排序取前4条。 遇到这个要求的时候就不是 ORDER BY 能解决的问题了。因此翻看 PHP 手册查找到了如下方法,做此笔记。废话少说,奉上代码,清单如下:
代码如下: &?php /** * 二维数组根据某个字段排序 * 功能:按照用户的年龄倒序排序 * @author ruxing.li */ header('Content-Type:text/Charset=utf-8'); $arrUsers = array( array( 'id' =& 1, 'name' =& '张三', 'age' =& 25, ), array( 'id' =& 2, 'name' =& '李四', 'age' =& 23, ), array( 'id' =& 3, 'name' =& '王五', 'age' =& 40, ), array( 'id' =& 4, 'name' =& '赵六', 'age' =& 31, ), array( 'id' =& 5, 'name' =& '黄七', 'age' =& 20, ), ); $sort = array( 'direction' =& 'SORT_DESC', //排序顺序标志 SORT_DESC 降序;SORT_ASC 升序 'field' =& 'age', //排序字段 ); $arrSort = array(); foreach($arrUsers AS $uniqid =& $row){ foreach($row AS $key=&$value){ $arrSort[$key][$uniqid] = $ } } if($sort['direction']){ array_multisort($arrSort[$sort['field']], constant($sort['direction']), $arrUsers); } var_dump($arrUsers); /* 输出结果: array (size=5) 0 =& array (size=3) 'id' =& int 5 'name' =& string '黄七' (length=6) 'age' =& int 20 1 =& array (size=3) 'id' =& int 2 'name' =& string '李四' (length=6) 'age' =& int 23 2 =& array (size=3) 'id' =& int 1 'name' =& string '张三' (length=6) 'age' =& int 25 3 =& array (size=3) 'id' =& int 4 'name' =& string '赵六' (length=6) 'age' =& int 31 4 =& array (size=3) 'id' =& int 3 'name' =& string '王五' (length=6) 'age' =& int 40 */
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具php二维数组排序详解
字体:[ ] 类型:转载 时间:
二维数组排序排序在php中也提供了一个函数array_multisort就可以直接排序了,下面我来介绍除了全使用array_multisort 对数组进行排序我们还写了一些自定二维数组排序方法
有时候为了达到一定目的,需要对二维数组进行排序,现分享一下其实现的方法。 代码如下:$arr=array ('1' =& array ( 'date' =& '', 'num' =& 5 ) ,'2' =& array ( 'date' =& '', 'num' =& 3 ) ,'3' =& array ( 'date' =& '', 'num' =& 10 )&)& ; $result = sysSortArray($arr,'num');这样运行之后的效果为:$arr=array ('1' =& array ( 'date' =& '', 'num' =& 3 ) ,'2' =& array ( 'date' =& '', 'num' =& 5 ) ,'3' =& array ( 'date' =& '', 'num' =& 10 )&)& ;用到的函数:/**&* Sort an two-dimension array by some level two items use array_multisort() function.&*&* sysSortArray($Array,"Key1","SORT_ASC","SORT_RETULAR","Key2";……)&* @author&&&&&&&&&&&&&&&&&&&&& lamp100&* @param& array&& $ArrayData&& the array to sort.&* @param& string& $KeyName1&&& the first item to sort by.&* @param& string& $SortOrder1& the order to sort by("SORT_ASC"|"SORT_DESC")&* @param& string& $SortType1&& the sort type("SORT_REGULAR"|"SORT_NUMERIC"|"SORT_STRING")&* @return array&&&&&&&&&&&&&&& sorted array.&*/function sysSortArray($ArrayData,$KeyName1,$SortOrder1 = "SORT_ASC",$SortType1 = "SORT_REGULAR"){&&& if(!is_array($ArrayData))&&& {&&&&&&& return $ArrayD&&& }&&& // Get args number.&&& $ArgCount = func_num_args();&&& // Get keys to sort by and put them to SortRule array.&&& for($I = 1;$I & $ArgC$I ++)&&& {&&&&&&& $Arg = func_get_arg($I);&&&&&&& if(!eregi("SORT",$Arg))&&&&&&& {&&&&&&&&&&& $KeyNameList[] = $A&&&&&&&&&&& $SortRule[]&&& = '$'.$A&&&&&&& }&&&&&&& else&&&&&&& {&&&&&&&&&&& $SortRule[]&&& = $A&&&&&&& }&&& }&&& // Get the values according to the keys and put them to array.&&& foreach($ArrayData AS $Key =& $Info)&&& {&&&&&&& foreach($KeyNameList AS $KeyName)&&&&&&& {&&&&&&&&&&& ${$KeyName}[$Key] = $Info[$KeyName];&&&&&&& }&&& }&&& // Create the eval string and eval it.&&& $EvalString = 'array_multisort('.join(",",$SortRule).',$ArrayData);';&&& eval ($EvalString);&&& return $ArrayD}另外:array_multisort 函数功能也很强大,详细可以参看PHP手册,里面讲的很详细。
我们可以使用array_multisort()这个函数。array_multisort() 函数对多个数组或多维数组进行排序。参数中的数组被当成一个表的列并以行来进行排序 - 这类似 SQL 的 ORDER BY 子句的功能。第一个数组是要排序的主要数组。数组中的行(值)比较为相同的话,就会按照下一个输入数组中相应值的大小进行排序,依此类推。第一个参数是数组,随后的每一个参数可能是数组,也可能是下面的排序顺序标志(排序标志用于更改默认的排列顺序)之一:•SORT_ASC - 默认,按升序排列。(A-Z)•SORT_DESC - 按降序排列。(Z-A)随后可以指定排序的类型:•SORT_REGULAR - 默认。将每一项按常规顺序排列。•SORT_NUMERIC - 将每一项按数字顺序排列。•SORT_STRING - 将每一项按字母顺序排列。语法:array_multisort(array1,sorting order,sorting type,array2,array3...)•array1:必需。规定输入的数组。•sorting order:可选。规定排列顺序。可能的值是 SORT_ASC 和 SORT_DESC。•sorting type:可选。规定排序类型。可能的值是SORT_REGULAR、SORT_NUMERIC和SORT_STRING。•array2:可选。规定输入的数组。•array3:可选。规定输入的数组。字符串键名将被保留,但是数字键将被重新索引,从 0 开始,并以 1 递增。可以在每个数组后设置排序顺序和排序类型。如果没有设置,每个数组参数会使用默认值。下面是一个例子: 代码如下:&?php&$arr = '';&echo '二维数组如下:'.'&br / &';&for($i=0; $i&=5; $i++)&{& $arr[$i]['val'] = mt_rand(1, 100);& $arr[$i]['num'] = mt_rand(1, 100);&}&echo '&pre&';&print_r($arr);&echo '&/pre&';&echo '从二维数组中抽出键为val,单独成另一个数组:'.'&br / &';&foreach ($arr as $key =& $row) &{&&&& $vals[$key] = $row['val'];&&&&&&& $nums[$key] = $row['num'];&}&echo '&pre&';&print_r($vals);&echo '&/pre&';&echo '对其进行排序:'.'&br / &';&array_multisort($vals, SORT_ASC, $arr);&echo '&pre&';&print_r($vals);&echo '&/pre&';?&&运行结果:二维数组如下:Array(&&& [0] =& Array&&&&&&& (&&&&&&&&&&& [val] =& 46&&&&&&&&&&& [num] =& 49&&&&&&& )&&& [1] =& Array&&&&&&& (&&&&&&&&&&& [val] =& 8&&&&&&&&&&& [num] =& 24&&&&&&& )&&& [2] =& Array&&&&&&& (&&&&&&&&&&& [val] =& 37&&&&&&&&&&& [num] =& 3&&&&&&& )&&& [3] =& Array&&&&&&& (&&&&&&&&&&& [val] =& 32&&&&&&&&&&& [num] =& 35&&&&&&& )&&& [4] =& Array&&&&&&& (&&&&&&&&&&& [val] =& 19&&&&&&&&&&& [num] =& 38&&&&&&& )&&& [5] =& Array&&&&&&& (&&&&&&&&&&& [val] =& 30&&&&&&&&&&& [num] =& 37&&&&&&& ))从二维数组中抽出键为val,单独成另一个数组:Array(&&& [0] =& 46&&& [1] =& 8&&& [2] =& 37&&& [3] =& 32&&& [4] =& 19&&& [5] =& 30)对其进行排序:Array(&&& [0] =& 8&&& [1] =& 19&&& [2] =& 30&&& [3] =& 32&&& [4] =& 37&&& [5] =& 46)我们将得到一个按val升序排序的二维数组。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具

我要回帖

更多关于 苹果5s关机充电显示图 的文章

 

随机推荐