【php基础】php数组常用操作函数

1·数组排序
    键排序
    krsort()和ksort()
    krsort()排序是对数组按照键名降序排序
    ksort()排序是对数组按照键名升序排序
    
    键值排序
    arsort()和asort()
    arsort()排序是数组进行降序排序,并保持键值关系
    asort()排序是数组升序排序,一样保持键值关系
    
    二维数组,以某一维为依据进行排序:
    
2·提取部分数组
    array_slice($arr,$start,$length)
    从$arr中提取出来一部分,从$start开始到$length
3·将字符串拆分成数组;将数组拼接成字符串
explode($separator,$string)
    拆分字符串;一句$seperator来拆分$string
implode()或者join()
    合并数组为字符串
4·其他一些常用的函数
list($first,$second) = array('nihao','nuli')
    这里将数组中的元素依次赋给list的参数;
    上句代码是将 'nihao'赋给$first   'nuli'赋给 $second
    【示例:
        list($width, $height) = getimagesize($filename);
        将获取到的图像信息赋值给独立的变量
    】
in_array($neddle,$arr)
    判断$neddle是否在$arr中存在
array_key_exists($key,$arr)
    判断$arr中是否存在键值$key
array_merge($arr1,$arr2....)
    将多个数组合并为一个数组;如果数组含有相同的字符串键名,则后面的会覆盖前面的值,如果是数字键名,则不会覆盖
array_unique($arr)
    取出$arr中重复的值;返回一个不包含重复值的数组
array_walk($arr,callback  functionname)
    对数组中的所有元素应用指定的函数
    
    
快速排序

[php] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. $arr   ---  要排序的数组  
  2. $left  ---  数组的左边界  
  3. $right ---  数组的右边界  
  4.   
  5. function quikSort(&$arr,$left,$right){  
  6.     if($left < $right){  
  7.         $i=$left-1;  
  8.         $x=$arr[$right];  
  9.         for($j=$left;$j<$right;$j++){  
  10.             if($arr[$j] <= $x){  
  11.                 $i++;  
  12.                 $temp=$arr[$i];  
  13.                 $arr[$i]=$arr[$j];  
  14.                 $arr[$j]=$temp;  
  15.             }  
  16.         }  
  17.         $i++;  
  18.         $temp=$arr[$i];  
  19.         $arr[$i]=$arr[$right];  
  20.         $arr[$right]=$temp;  
  21.         quikSort($arr,$left,$i-1);  
  22.         quikSort($arr,$i+1,$right);  
  23.     }  
  24. }  




归并排序

[php] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. $arr   ---  要排序的数组  
  2. $left  ---  数组的左边界  
  3. $right ---  数组的右边界  
  4.   
  5.   
  6. function mergeSort(&$arr,$left,$right){  
  7.     $temp=$left+(int)floor((double)($right-$left)/2);  
  8.     if($temp!=$left){  
  9.         mergeSort($left,$temp);  
  10.     }  
  11.     if($temp+1!=$right){  
  12.         mergeSort($temp+1,$right);  
  13.     }  
  14.     $p=$temp;  
  15.     $q=$right;  
  16.     while($p>=$left || $q>$temp){  
  17.         if($leftrr[$p]>$leftrr[$q] && $p>=$left && $q>$temp){  
  18.             $leftrr_temp[$sign++]=$leftrr[$p--];  
  19.         }else if($p>=$left && $q>$temp){  
  20.             $leftrr_temp[$sign++]=$leftrr[$q--];  
  21.         }else if($p<$left && $q>$temp){  
  22.             $leftrr_temp[$sign++]=$leftrr[$q--];  
  23.         }else if($p>=$left && $q<=$temp){  
  24.             $leftrr_temp[$sign++]=$leftrr[$p--];      
  25.         }  
  26.     }  
  27.   
  28.     for($temp=$left;$temp<=$right;$temp++){  
  29.         $leftrr[$temp]=$leftrr_temp[$sign-1];  
  30.         $sign--;  
  31.     }  
  32. }  




选择排序

$arr  ---  要排序的数组

[php] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. function  chooseSort(&$arr){  
  2.     $length = count($arr);  
  3.     for($now = $length-1;$now > 0 ;$now--){  
  4.         $temp = $now;  
  5.         for($point=0;$point<$now;$point++){  
  6.             if($arr[$point] > $arr[$temp]){  
  7.                 $temp = $point;  
  8.             }  
  9.         }  
  10.         if($temp != $now){  
  11.             $swap = $arr[$now];  
  12.             $arr[$now] = $arr[$temp];  
  13.             $arr[$temp] = $swap;  
  14.         }  
  15.     }  
  16. }  



posted @ 2016-12-25 16:11  天涯海角路  阅读(145)  评论(0)    收藏  举报