摘要:<?php /** * 数组的键值处理函数详解 * array_value($arr):返回元素的值组成的新数组 * array_column($arr,$col,$index):返回多维数组中的一列 * array_keys($arr,$val,$bool):返回元素的键名组成的新数组 *&
<?php
/**
* 数组的键值处理函数详解
* array_value($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) 将原数组中的元素顺序翻转
*
* print_r($arr,$bool)
* var_dump($arr1,$arr2...)
* var_export($arr,$bool)
*/
/*
* 数组与变量和字符串之间的转换
*
* list($var1,$var2...) 将数组中的索引元素转为变量
* extract($arr,$flag) 将数组中的关联元素转为变量
* compact($str1,$str2..) 将变量转为关联数组,与上面相反
* explode($delimiter,$str,$limit) 将字符串转为数组 $limit:3 分为3个元素,剩下的都放到最后一个元素里面,-3指的是删除后面三个元素
* implode($glue,$arr) 将数组转为字符串
*
* */
$arr =['小龙女','php','80'];
list($name,$kec,$grade)=$arr;
echo $name,',',$kec,',',$grade,'<hr>';
$arr=['id'=>'10','name'=>'小龙女','gz'=>'5000'];
extract($arr);
echo $id,'*',$name,'*',$gz;
//echo var_export($arr,true);
echo '<hr>';
//将变量转换为关联数组 compact()
$name='陈近南';
$faction='天地会';
$position='舵主';
$arr = compact('name','faction','position');
echo var_export($arr,true);
echo '<hr>';
//explode()
$lang='html,css,js,php,java,json';
$arr=explode(',',$lang,-3);
echo var_export($arr,true);
echo '<hr>';
//implode($glue,$arr) 将数组转换成字符串
$arr=['首页','公司简介','产品展示','新闻动态','联系我们'];
//echo implode(',',$arr);
echo var_export('<a href="#">'.implode('</a> | <a href="#">',$arr).'</a>',true).'<hr>';
//生成sql语句
//'INSERT INTO 表名 (字段列表) VALUES (值列表)';
$member =['name'=>'rambo','sex'=>'男','age'=>'32','address'=>'长沙'];
$sql = 'INSERT INTO member';
//获取数组中的键,生成键的数组
$key=array_keys($member);
//print_r($key);
//将数组转换成字符串,生成字段列表
$key2 = implode('`,`',$key);
// 拼接sql语句
$sql .= ' (`'.$key2.'`)';
//echo $sql;
//取得数组元素的值,生成值的数组
$value = array_values($member);
//print_r($value);
//将数组转为字符串,生成值的列表
$value2 =implode("','",$value);
//echo $value2;
//拼接sql语句
$sql .= " VALUES ('".$value2."')";
echo $sql; //INSERT INTO member (`name`,`sex`,`age`,`address`) VALUES ('rambo','男','32','长沙')
/*
* 数组的切割与填充
*
* array_slice($arr,$offset,$length,$bool);从数组中返回指定的元素,$offset从什么位置开始,保留键名$bool设置true
* array_splie(&$arr,$offset,$length);从数组中删除或 替换指定元素 &表示引用传参,直接改变原数组元素,删除直接在后面跟字符串或数组
* array_chunk($arr,$size,$bool);将大数组切割成若干个小数组
*
* */
/*
* 用数组实现堆栈与队列操作
*
* 堆栈是后进先出,队列是先进先出
*
* array_push($arr,$value) 从数组的尾部添加
* array_pop($arr) 从尾部删除
* array_unshift($arr,$value) 从头部添加
* array_shift($arr) 从头部删除
*
* */
echo '<hr>';
/*
* 数组元素的遍历与回调处理
* array_filter($arr,$callback) 用回调过滤数组元素,不传入回调,会过滤掉数组中为false的元素
* array_walk(&$arr,$callback,$var) 遍历元素并回调处理,,键在后面
* */
$arr = ['0','1','33','',false,null,'admin'];
//不传入回调
echo var_export(array_filter($arr),true).'<hr>';
//传入回调
$arr2 =array_filter($arr,function ($value){
return ($value !=='33');
});
echo var_export($arr2,true).'<hr>';
$arr3 =['name'=>'rambo','stu'=>'PHP'];
array_walk($arr3,function (&$value,$key,$name){
if($value==$name){
exit('无权查看<hr>');
}else{
echo $key.'::'.$value.'<br>';
}
},'admin');
/*
* 数组的排序
*
* 根据值排序:
* 忽略键名:sort()升序,rsort()降序,usort()回调 //针对索引数组 回调是2个比较
* 保留键名:asort()升序,arsort()降序,uasort()回调 //针对关联数组
*
* 根据键名排序:
* ksort()升序,krsort()降序,uksort()回调
*
* 回调主要用于二维数组排序
* strcmp() 字符串比较
* */
//substr(函数名,第几个位置开始,取几个元素);取函数的某个位置
echo '<hr>';
$arr=[
['name'=>'张三','course'=>'语文','grade'=>'90'],
['name'=>'李四','course'=>'语文','grade'=>'80'],
['name'=>'王五','course'=>'语文','grade'=>'75']
];
$arr2=uasort($arr,function ($m,$n){
return strcmp($m['grade'],$n['grade']);
// $temp= strcmp($m['grade'],$n['grade']);
// switch ($temp){
// case ($temp>0):
// return 1;
// break;
// case ($temp<0):
// return -1;
// break;
// case ($temp=0):
// return 0;
// break;
//
// }
});
echo '<pre>'.var_export($arr,true).'<hr>';
/*
* range($start,$end,$step)生成指定范围与步长的数组 $step 间隔几个的意思
* array_unipue($arr) 删除数组中值重复的元素(键名不存在重复的)
* array_fill($arr,$value) 用户指定元素初始化一个数组
* array_rand($arr,$size) 从数组中随机取出部分元素
* shuffle($arr) 将数组元素随机打乱显示
* array_merge($arr1,$arr2) 将多个数组进行合并,键名相同则覆盖
*
* */
批改老师:韦小宝批改时间:2018-12-14 09:26:53
老师总结:写的很棒!总结的非常清楚!注释写的也很详细!课后要记得把几个常用的数组函数多练习几遍哦!继续加油吧!