部分输出函数:
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>';