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

本文深入探讨了数组排序的相关算法及操作技巧,包括键排序、键降序排序、键升序排序、二维数组排序、提取数组部分、字符串转换数组与合并、常用数组函数等。同时介绍了快速排序、归并排序、选择排序算法的应用,以及如何使用PHP中的数组函数进行高效的数据处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;
        }
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值