Blogger Information
Blog 40
fans 1
comment 0
visits 32934
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
php的数组函数
李明伟的博客
Original
825 people have browsed it

部分输出函数:

print_r——格式化的输出变量,数组

var_dump——输出一个变量或多个变量的详细信息(包括数据类型等)

var_export——输出变量的字符串表示,其实就是php语句,在其中添加true可以实现用echo输出

数组键值函数

•array_values($arr):  返回元素的值组成的新数组 

•array_column($arr,$col,$index):返回多维数组中的一列 

•array_keys($arr, $val, $bool): 返回元素的键名组成的新数组

 •in_array($val, $arr, $bool): 判断元素中是否存在某个值

 •array_search($val,$arr,$bool): 查找指定值, 并返回该值的键名 

•array_key_exists($key, $arr): 判断数组中是否存在指定的键名 

•array_flip($arr): 键值对调 •array_reverse($arr): 数组翻转

数组函数

•list($var1,$var2...):  将数组中的索引元素转为变量

//1.list($var1,$var2,...)将索引元素转化为变量
list($name,$course,$grade) = ['李铭炜','php',95];
//等价于
//$name = '李铭炜';
//$course = 'php';
//$grade = 95;
//echo $name.'的'.$course.'的成绩是:'.$grade.'<hr>';
echo "{$name}的{$course}的成绩是:{$grade}<hr>";

 •extract($arr,$flag): 将数组中的关联元素转为变量

//2.extract($arr,$flag)将数组中的关联元素转为变量,extract返回值为生成变量的数量
//此时键值名转换为了变量
$arr1 = ['id'=>10,'name'=>'李铭炜','sex'=>'male','salary'=>15000];
echo '共生成了'.var_export(extract($arr1),true).'个变量:<br>';
echo '我的id是'.$id.',姓名是'.$name.'性别:'.$sex.'工资是:'.$salary.'元<hr>';

 •compact($str1, $str2...): 将变量转为关联数组(与extract()功能相反) 

//3.compact($str1,$str2...):将变量转化为数组
$name = '李明伟';
$faction = '南阳理工学院';
$position = '知名校友';
//['name'=>'李明伟','faction'=>'南阳理工学院','position'=>'知名校友'];
$arr = compact('name','faction','position');//变量名变为键值名
echo var_export($arr,true),'<hr>';

•explode($delimiter, $str, $limit): 将字符串转为数组 

//4.explode()将字符串转为数组
$lang = 'html,css,jquery,php,sql';
echo var_export(explode(',',$lang),true),'<hr>';
//限制转换的数组元素的数量
echo  var_export(explode(',',$lang,2),true),'<hr>';
//limit为负数时,负数就是要删除的元素个数
echo var_export(explode(',',$lang,-3),true),'<hr>';

•implode($glue, $arr): 将数组转为字符串

//5.implode()将数组转化为字符串
$arr = ['首页','新闻','产品','联系我们'];
echo var_export(implode(',',$arr),true),'<hr>';
//添加a标签转化为导航
echo var_export("<a href='#'>".implode('</a> | <a href="#">',$arr).'</a>',true).'<hr>';

数组的切割与填充

•array_slice($arr,$offset,$length,$bool):  从数组中返回指定的元素

////1.array_slice($arr,$offset,$size,$bool)
//$arr = [10,20,30,40,50,60];
//////从索引0开始,就是从第一个元素开始,返回所有数据
////echo var_export(array_slice($arr,0),true),'<hr>';
////echo var_export(array_slice($arr,2),true),'<hr>';
//////从指定的索引开始返回所有数量的元素
////echo var_export(array_slice($arr,2,3),true),'<hr>';
//////从返回的结果找那个,删除指定的元素(将array_slice()中的length设置为负数)
////echo var_export(array_slice($arr,2,-2),true),'<hr>';
//////保留原本的键值关系,保留原键值(在array_slice()中添加参数true)
////echo var_export(array_slice($arr,2,-2,true),true),'<hr>';

 •array_splice(&$arr,$offset,$length): 从数组中删除或替换指定的元素 

////2.array_splice(&$arr,$offset,$size)(array_slice()的升级版,可在任意位置对数组元素进行删除增加)
////从索引2开始,删除两个元素
//echo '原始数组:'.var_export($arr,true),'<hr>';
//echo '被移除的元素是:'.var_export(array_splice($arr,2,2),true).'<hr>';
//echo '原始数组:'.var_export($arr,true),'<hr>';
////移除且替换一个元素
//$arr = [10,20,30,40,50,60];
//echo '原始数组:'.var_export($arr,true).'<hr>';
//echo '被移除的元素是:'.var_export(array_splice($arr,2,1,'php'),true).'<hr>';
//echo '原始数组:'.var_export($arr,true).'<hr>';
////移除且替换多个元素(用数组装替换的变量)
//$arr = [10,20,30,40,50,60];
//echo '原始数组:'.var_export($arr,true).'<hr>';
//echo '被移除的元素是:'.var_export(array_splice($arr,2,2,['php','mysql']),true).'<hr>';
//echo '原始数组:'.var_export($arr,true).'<hr>';

•array_chunk($arr,$size,$bool): 将大数组切割成若干个小数组

////3.array_chunk():将大数组划分成指定大小的小数组
//$arr = range(1,10);
//echo '<pre>'.var_export(array_chunk($arr,3),true).'<hr>';
////保留原本的数组键名(传入第三个参数——true)
//echo '<pre>'.var_export(array_chunk($arr,3,true),true).'<hr>';

 •array_pad($arr, $size, $value): 将数组填充到指定的长度

//4.array_pad($arr,$size,$value)
//将数组填充到指定长度(填充的内容为变量)
//$arr = [50,60,70];
//echo var_export(array_pad($arr,6,99),true).'<hr>';
////将数组填充到指定长度(填充的内容为数组)
//$arr = [50,60,70];
//echo var_export(array_pad($arr,6,[88,99]),true).'<hr>';
////到数组长度值为负数时,指向前填充改变填充方向,正数为向后填充
//$arr = [50,60,70];
//echo var_export(array_pad($arr,-6,99),true).'<hr>';

用数组实现堆栈与队列

•array_push($arr,$value):  从数组尾部添加(入栈/入队)

/尾部进行增删操作
//1.堆栈:array_push()入栈,array_pop()出栈
//$arr = [];
//echo '入栈:'.array_push($arr,'李铭炜').'个元素'.'<hr>';
//echo '当前数组'.var_export($arr,true).'<hr>';
//echo '入栈:'.array_push($arr,'李铭','李炜').'个元素'.'<hr>';
//echo '入栈:'.array_push($arr,['炜','铭炜']).'个元素'.'<hr>';
//echo '当前数组'.var_export($arr,true).'<hr>';

 •array_pop($arr):  从数组尾部删除元素(出栈/出队)

//2.出栈:array_pop
//echo '出栈元素'.var_export(array_pop($arr),true).'<hr>';
//echo '出栈元素'.var_export(array_pop($arr),true).'<hr>';

 •array_unshift($arr,$value): 从数组头部添加(入栈/入队) 

////头部进行增删操作
////array_unshift()头部添加数据
//$arr = [];
//echo '添加元素' . array_unshift($arr, '李铭炜') . '个元素<hr>';
//echo '添加元素' . array_unshift($arr, '铭炜') . '个元素<hr>';
//echo '添加元素' . array_unshift($arr, '李炜') . '个元素<hr>';
//echo '当前数组'.var_export($arr,true).'<hr>';

•array_shift($arr): 从数组头部删除元素(出栈/出队)

////array_shift()删除操作
//echo '被删除的是:'.array_shift($arr).'<hr>';
//echo '被删除的是:'.array_shift($arr).'<hr>';

数组的回调处理

•array_filter($arr,$callback):  用回调过滤数组元素 

//array_filter($arr,$callback)
$arr1 = [5, 0, '', 20, null, 88, false, 'php'];
echo '原始数据:<pre>' . var_export($arr1, true) . '<hr>';
//1.不传入回调函数array_filter:过滤掉数组中为false,0,'',null的元素
$arr2 = array_filter($arr1);
echo '新数组:<pre>' . var_export($arr2, true) . '<hr>';

//2.传入回调,会将数组中的每一个值传入匿名函数中进行处理
$arr3 = ['html', 'css', 'javascript'];
$arr4 = array_filter($arr3, function ($value) {
//    如果值等于css,则过滤
    return ($value !== 'css');
});
echo '新数组:<pre>' . var_export($arr4, true) . '<hr>';

•array_walk(&$arr,$callback,$var):  遍历元素并回调处理

array_walk($arr, function (&$val, $key) {
    echo $key . '::' . $val . '<br>';
});
echo '<hr>';

//传入第三个自定义参数,实现更加强大的功能
array_walk($arr, function (&$val, $key, $name) {
    //如果想查看的用户名是admin,则拒绝
    if ($val == $name) {
        exit('无权查看');
    }else{
        echo $key.':'.$val.'<br>';
    }
}, 'peter');

数组的排序

•根据值排序

:  •忽略键名: 

     sort()升序

//$arr = [45, 90, 22, 10, 3, 18, 33];
//sort($arr);//默认为升序并忽略键名

     rsort()降序

rsort($arr);//降序排列并忽略键名

    usort()回调 

////回调(usort)——多用于多维数组
//$arr = [45, 90, 22, 10, 3, 18, 33];
//usort($arr, function ($var1, $var2) {
//    $res = $var1 - $var2;
//    switch ($res) {//升序的写法
//        case($res <= 0):
//            return -1;
//            break;
//        case ($res > 0):
//            return 1;
//            break;
//    }
//});
//echo var

•保留键名:  

    asort()升序

//$price = ['宁波'=> 27000,'上海'=>50000,'南阳'=>10000];
//asort($price);
//echo '新数据:' . var_export($price, true) . '<hr>';

    arsort()降序

////降序
//arsort($price);
//echo '新数据:' . var_export($price, true) . '<hr>';

    uasort()回调

 •根据键名排序:

     ksort()升序

ksort($lang);

     krsort()降序

krsort($lang);

    uksort()回调

uksort($lang,function ($m,$n){
    $a = substr($m,1,1);
    $b = substr($n,1,1);
    return strcmp($a,$b);
});

其他常用的数组函数

•range($start,$end, $step):  生成指定范围与步长的数组

//1.range()生成指定范围和步长的数组
$arr = range(5, 20, 5);
echo var_export($arr, true) . '<hr>';

 •array_unique($arr):  删除数组中值重复的元素(键名不存在重复的) 

//2.array_unique():去掉数组中的重复值
$arr = [4, 10, 22, 10, 22, 33];
echo var_export($arr, true) . '<hr>';
echo var_export(array_unique($arr), true) . '<hr>';

•array_fill($arr,$value): 用指定元素初始化一个数组

//3.array_fill():填充数组
//创建一个有10个元素的数组,并用0进行初始化
//array_fill(数组索引,元素数量,填充值)
$arr = array_fill(0, 10, 0);
echo var_export($arr, true) . '<hr>';

 •array_rand($arr,$size): 从数组中随机取出部分元素 

//4.array_rand()从数组中随机抽取一些数据,返回的是数据的键值
$arr = [2, 14, 19, 5, 44, 10];
$keys = array_rand($arr, 3);
foreach ($keys as $key) {
    $res[$key] = $arr[$key];
}
echo var_export($res, true) . '<hr>';

•shuffle($arr): 将数组元素随机打乱显示

//5.shuffle():将数组的顺序随机打乱,直接更新原数组(引用传参)
$arr = [34,44,1,'A'];
shuffle($arr);
echo var_export($arr, true) . '<hr>';

 •array_merge($arr1, $arr2): 将多个数组进行合并,键名相同则覆盖

//6.array_merge()合并多个数组,同一键名会被自动覆盖,返回一个新数组,常用语参数配置
$db_sys = ['host'=>'127.0.0.1','user'=>'root','pass'=>'root'];
$db_user = ['host'=>'localhost','pass'=>'123456'];
$res = array_merge($db_sys,$db_user);
echo var_export($res, true) . '<hr>';


Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments