您的位置:首页 > 编程语言 > PHP开发

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

2014-03-13 09:16 731 查看
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;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: