部分输出函数:
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()功能相反)
//3pact($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>';
更多推荐
php的数组函数
发布评论