博客列表 >php的数组函数

php的数组函数

李明伟的博客
李明伟的博客原创
2019年04月30日 14:52:14819浏览

部分输出函数:

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


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议