• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    PHP常见数组排序方法小结

    本文实例讲述了PHP常见数组排序方法。

    一、数组操作的基本函数

    数组的键名和值
    array_values($arr); 获得数组的值
    array_keys($arr); 获得数组的键名
    array_flip($arr); 数组中的值与键名互换(如果有重复前面的会被后面的覆盖)
    in_array("apple",$arr); 在数组中检索apple
    array_search("apple",$arr); 在数组中检索apple ,如果存在返回键名
    array_key_exists("apple",$arr); 检索给定的键名是否存在数组中
    isset($arr[apple]): 检索给定的键名是否存在数组中

    数组的内部指针
    current($arr); 返回数组中的当前单元
    pos($arr); 返回数组中的当前单元
    key($arr); 返回数组中当前单元的键名
    prev($arr); 将数组中的内部指针倒回一位
    next($arr); 将数组中的内部指针向前移动一位
    end($arr); 将数组中的内部指针指向最后一个单元
    reset($arr; 将数组中的内部指针指向第一个单元
    each($arr); 将返回数组当前元素的一个键名/值的构造数组,并使数组指针向前移动一位
    list($key,$value)=each($arr); 获得数组当前元素的键名和值

    数组和变量之间的转换
    extract($arr);用于把数组中的元素转换成变量导入到当前文件中,键名当作变量名,值作为变量值
    注:(第二个参数很重要,可以看手册使用)使用方法 echo $a;
    compact(var1,var2,var3);用给定的变量名创建一个数组

    二、数组的分段和填充

    数组的分段
    array_slice($arr,0,3); 可以将数组中的一段取出,此函数忽略键名
    array_splice($arr,0,3,array("black","maroon")); 可以将数组中的一段取出,与上个函数不同在于返回的序列从原数组中删除

    分割多个数组
    array_chunk($arr,3,TRUE); 可以将一个数组分割成多个,TRUE为保留原数组的键名

    数组的填充
    array_pad($arr,5,'x'); 将一个数组填补到制定长度

    三、数组与栈

    array_push($arr,"apple","pear"); 将一个或多个元素压入数组栈的末尾(入栈),返回入栈元素的个数
    array_pop($arr); 将数组栈的最后一个元素弹出(出栈)

    四、数组与列队

    array_shift($arr);数组中的第一个元素移出并作为结果返回(数组长度减1,其他元素向前移动一位,数字键名改为从零技术,文字键名不变)
    array_unshift($arr,"a",array(1,2));在数组的开头插入一个或多个元素

    五、回调函数

    array_walk($arr,'function','words'); 使用用户函数对数组中的每个成员进行处理(第三个参数传递给回调函数function)
    array_mpa("function",$arr1,$arr2); 可以处理多个数组(当使用两个或更多数组时,他们的长度应该相同)
    array_filter($arr,"function"); 使用回调函数过滤数组中的每个元素,如果回调函数为TRUE,数组的当前元素会被包含在返回的结果数组中,数组的键名保留不变
    array_reduce($arr,"function","*"); 转化为单值函数(*为数组的第一个值)

    六、数组的排序

    通过元素值对数组排序
    sort($arr); 由小到大的顺序排序(第二个参数为按什么方式排序)忽略键名的数组排序
    rsort($arr); 由大到小的顺序排序(第二个参数为按什么方式排序)忽略键名的数组排序
    usort($arr,"function"); 使用用户自定义的比较函数对数组中的值进行排序(function中有两个参数,0表示相等,正数表示第一个大于第二个,负数表示第一个小于第二个)忽略键名的数组排序
    asort($arr); 由小到大的顺序排序(第二个参数为按什么方式排序)保留键名的数组排序
    arsort($arr); 由大到小的顺序排序(第二个参数为按什么方式排序)保留键名的数组排序
    uasort($arr,"function"); 使用用户自定义的比较函数对数组中的值进行排序(function中有两个参数,0表示相等,正数表示第一个大于第二个,负数表示第一个小于第二个)保留键名的数组排序

    通过键名对数组排序
    ksort($arr); 按照键名正序排序
    krsort($arr); 按照键名逆序排序
    uksort($arr,"function"); 使用用户自定义的比较函数对数组中的键名进行排序(function中有两个参数,0表示相等,正数表示第一个大于第二个,负数表示第一个小于第二个)

    自然排序法排序

    natsort($arr); 自然排序(忽略键名)
    natcasesort($arr); 自然排序(忽略大小写,忽略键名)

    七、数组的计算

    数组元素的求和
    array_sum($arr); 对数组内部的所有元素做求和运算

    数组的合并
    array_merge($arr1,$arr2); 合并两个或多个数组(相同的字符串键名,后面的覆盖前面的,相同的数字键名,后面的不会做覆盖操作,而是附加到后面)
    “+”$arr1+$arr2; 对于相同的键名只保留后一个
    array_merge_recursive($arr1,$arr2); 递归合并操作,如果数组中有相同的字符串键名,这些值将被合并到一个数组中去。如果一个值本身是一个数组,将按照相应的键名把它合并为另一个数组。当数组 具有相同的数组键名时,后一个值将不会覆盖原来的值,而是附加到后面

    数组的差集
    array_diff($arr1,$arr2); 返回差集结果数组
    array_diff_assoc($arr1,$arr2,$arr3); 返回差集结果数组,键名也做比较

    数组的交集
    array_intersect($arr1,$arr2); 返回交集结果数组
    array_intersect_assoc($arr1,$arr2); 返回交集结果数组,键名也做比较

    八、其他的数组函数

    range(0,12); 创建一个包含指定范围单元的数组
    array_unique($arr); 移除数组中重复的值,新的数组中会保留原始的键名
    array_reverse($arr,TRUE); 返回一个单元顺序与原数组相反的数组,如果第二个参数为TRUE保留原来的键名
    //srand((float)microtime()*10000000); 随机种子触发器
    array_rand($arr,2); 从数组中随机取出一个或 多个元素
    shuffle($arr); 将数组的顺序打乱

    分类: 整理分享给大家供大家参考,具体如下:

    1.简单数组排序 sort() 函数和rsort() 函数:

    bool sort(array array [,int sort_flags]
    
    
    bool rsort(array array [.int_sort_flags]
    
    

    参数:第一个参数是排序数组对象

    第二个参数是可以选的 可选值:

    SORT_REGULAR:是默认值,将自动识别数组的元素类型进行排序
    SORT_NUMERIC:用于数组元素排序
    SORT_STRING:用于字符串排序
    SORT_LOCALE_STRING:根据当前的locale设置来把元素当作字符串比较

    示例:

    $a=array(4,7,9,1);
    sort($a);
    pirnt_r($a);
    rsort($a);
    print_r($a);
    
    

    2.根据键名对数组排序

    ksort() 函数按照键名对数组进行有小到大的排序。 krsort()ksort()函数相反,排序后为数组值保持原来的键。

    示例:

    $data= array(5=>"five",8=>"eight",1=>"one",7=>"seven");
    ksrot($data);
    print_r($data);
    krsot($data);
    print_r($data);
    
    

    3.根据元素值排序

    asort() 从小到大 arsort() 从大到小,用这个函数排序,原始键名将被忽略,使用依次数字重新索引数组下标

    $data=array("a"=>1,"b"=>2,"c"=>3);
    asort($data);
    print_r($data);
    arsort($data);
    print_r($data);
    
    

    4.自然排序

    是个非常特殊的排序方式,这种方式使用认知而不是使用计算规则,这种特性称为——自然排序法,即数字从1到9,字母从a-z,短者优先。

    示例:

    $data=array("file1.txt","file11.txt","file111.txt");
    natsort($data);//普通自然排序
    natcasesort($data);//忽略大小写
    
    

    5.根据用户自定义排序规则

    bool usort(array array ,callback cmp_function)
    bool uasort(array array,callback cmp_function)
    bool uksort(array array,callback cmp_function)
    
    

    自定义回调函数,需要两个参数,分别是数组两个连续元素,比较第一个参数小于,大于,等于第二个参数是分别返回 0,1,-1

    $data= array("ab","abc","a","ac","abcd");
    usrot($data,"mysortByLen");
    function mysortByLen($one,$two){
     if(strlen($one)== strlen($two)){
     return 0;
     }else{
     return (strlen($one)>strlen($two))?1:-1;
    }
    
    

    6.多维数组排序

    array_multisort()函数对多个数组排序,或者根据某一维或多维对多维数组排序。

    bool array_multisort(array array1 [,mixed arg,[,array ....]])
    

    示例:

    $data=array(
     array("id"=>1,"name"=>4),
     array("id"=>1,"name"=>2),
     array("id"=>2,"name"=>3)
    );
    foreach($data as $key=>$value){
     $ids[$key]=$value["id"];
     $names[$key]=$value["name"]
    }
    array_multisort($data,$ids,$names);
    print_r($data);
    
    

    输出如下:

    array(
       array("id"=>1,"name"=>2),
       array("id"=>1,"name"=>4),
       array("id"=>2,"name"=>3)
    );

    PS:这里再为大家推荐一款关于排序的演示工具供大家参考:

    在线动画演示插入/选择/冒泡/归并/希尔/快速排序算法过程工具:
    http://tools.jb51.net/aideddesign/paixu_ys

    更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数组(Array)操作技巧大全》、《php排序算法总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《php字符串(string)用法总结》及《PHP常用遍历算法与技巧总结》

    希望本文所述对大家PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • PHP 数组排序方法总结 推荐收藏
    • php中二维数组排序问题方法详解
    • array_multisort实现PHP多维数组排序示例讲解
    • php简单实现多维数组排序的方法
    • PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
    • php不用内置函数对数组排序的两个算法代码
    • php 数组排序 array_multisort与uasort的区别
    • php关于array_multisort多维数组排序的使用说明
    • PHP数组排序之sort、asort与ksort用法实例
    • PHP 简单数组排序实现代码
    上一篇:php 提交表单 关闭layer弹窗iframe的实例讲解
    下一篇:php从数据库中获取数据用ajax传送到前台的方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    PHP常见数组排序方法小结 PHP,常见,数组,排序,方法,