【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)
对数组中的所有元素应用指定的函数
快速排序
- $arr --- 要排序的数组
- $left --- 数组的左边界
- $right --- 数组的右边界
- function quikSort(&$arr,$left,$right){
- if($left < $right){
- $i=$left-1;
- $x=$arr[$right];
- for($j=$left;$j<$right;$j++){
- if($arr[$j] <= $x){
- $i++;
- $temp=$arr[$i];
- $arr[$i]=$arr[$j];
- $arr[$j]=$temp;
- }
- }
- $i++;
- $temp=$arr[$i];
- $arr[$i]=$arr[$right];
- $arr[$right]=$temp;
- quikSort($arr,$left,$i-1);
- quikSort($arr,$i+1,$right);
- }
- }
归并排序
- $arr --- 要排序的数组
- $left --- 数组的左边界
- $right --- 数组的右边界
- function mergeSort(&$arr,$left,$right){
- $temp=$left+(int)floor((double)($right-$left)/2);
- if($temp!=$left){
- mergeSort($left,$temp);
- }
- if($temp+1!=$right){
- mergeSort($temp+1,$right);
- }
- $p=$temp;
- $q=$right;
- while($p>=$left || $q>$temp){
- if($leftrr[$p]>$leftrr[$q] && $p>=$left && $q>$temp){
- $leftrr_temp[$sign++]=$leftrr[$p--];
- }else if($p>=$left && $q>$temp){
- $leftrr_temp[$sign++]=$leftrr[$q--];
- }else if($p<$left && $q>$temp){
- $leftrr_temp[$sign++]=$leftrr[$q--];
- }else if($p>=$left && $q<=$temp){
- $leftrr_temp[$sign++]=$leftrr[$p--];
- }
- }
- for($temp=$left;$temp<=$right;$temp++){
- $leftrr[$temp]=$leftrr_temp[$sign-1];
- $sign--;
- }
- }
选择排序
$arr --- 要排序的数组
- function chooseSort(&$arr){
- $length = count($arr);
- for($now = $length-1;$now > 0 ;$now--){
- $temp = $now;
- for($point=0;$point<$now;$point++){
- if($arr[$point] > $arr[$temp]){
- $temp = $point;
- }
- }
- if($temp != $now){
- $swap = $arr[$now];
- $arr[$now] = $arr[$temp];
- $arr[$temp] = $swap;
- }
- }
- }

浙公网安备 33010602011771号