数组输出函数
print_r($arr,$bool) 格式化输出变量
实例
$arr1 = ['id'=>10, 'name'=>'杨过', 'sex'=>'male', 'salary'=>8000]; $res = print_r($arr1, true); echo gettype($res),'<br>'; echo $res,'<br>';
运行结果
string
Array ( [id] => 10 [name] => 杨过 [sex] => male [salary] => 8000 )
var_dump($arr1,$arr2...) 可输出多个变量的详细信息
实例
$arr1 = ['id'=>10, 'name'=>'杨过', 'sex'=>'male', 'salary'=>8000]; echo var_dump($arr1),'<br>';
运行结果
array(4) { ["id"]=> int(10) ["name"]=> string(6) "杨过" ["sex"]=> string(4) "male" ["salary"]=> int(8000) }
var_export($arr,true) 输出变量的字符串表示,其实就是php语句
实例
$arr1 = ['id'=>10, 'name'=>'杨过', 'sex'=>'male', 'salary'=>8000]; echo var_export($arr1,true), '<hr>';
运行结果
array ( 'id' => 10, 'name' => '杨过', 'sex' => 'male', 'salary' => 8000, )
可加<pre></pre>标签包裹格式化输出方便查看
实例
echo '<pre>',var_export(array_values($arr1),true),'</pre><hr>';
array (
0 => 10,
1 => '杨过',
2 => 'male',
3 => 8000,
)
数组函数__键值操作
array_values($arr): 返回元素值组成的新数组(索引)
* 1. 功能: 获取数组中的元素值组成的新数组
* 2. 参数: 只有一个:要处理的数组
* 3. 返回: 由元素值组成的,且键名经过重新排序的索引数组
* 4. 场景: 1.关联转索引 2.键名重新整理
array_column($arr,$col, $index): 返回多维数组中的一列,可指定键或索引
* 1. 功能: 获取多维数组中指定列值组成的新数组
* 2. 参数: $arr(必),$col(必),$bool(选)类型匹配
* 3. 返回: 多列组成的新数组
* 4. 场景: 获取数据表中的指定列的值
array_keys($arr,$val,$bool): 返回键名组成的新数组
* 1. 功能: 返回键名组成的新数组
* 2. 参数: $arr(必),$key(必),$bool(选)类型匹配
in_array($val, $arr, $bool): 根据元素值判断值是否在数组中,返回布尔值
* 1.功能: 检查数组中是否存在某个值
* 2.参数: $val(必),$arr(必),$bool(选)是否严格类型匹配
* 3.返回: bool
* 4.场景: 仅适合一维数组
array_search($val, $arr,$bool): 查找指定值,并返回该值的键名,否则返回false
* 1.功能: 在数组中查询指定的值
* 2.参数: $val(必),$arr(必),$bool(选)类型匹配
* 3.返回: 成功返回值对应的键名,失败返回false
* 4.场景: 与in_array()相比,可以获取更精准的信息
array_key_exists($key,$arr): 根据键名判断元素是否在数组中
* 1.功能: 判断数组中是否存在指定的键名
* 2.参数: $key(必), $arr(必)
* 3.返回: true / false
* 4.场景: 仅适用于一维数组,判断GET参数很方便
array_flip($arr): 键值互换
* 1.功能: 键值互换
* 2.参数: $arr(必)
* 3.返回: 新数组
array_reverse(): 数组元素顺序翻转
* 1.功能: 数组元素顺序反转
* 2.参数: $arr(必)
* 3.返回: 新数组
数组函数_数组与变量,字符串之间的转换
list($var1,$val2...)
list($var1, $var2...) = $arr
* 其实list()并不是数组函数,而是一个左值的语法结构,也echo 类似
* 1. 功能: 将索引数组中的元素与指定变量进行绑定
* 2. 功能: 变量名列表
* 3. 返回: 与数组元素值对应的独立变量
* 4. 场景: 将索引数组的内容转为独立变量
* 5. 注意: 必须是索引数组,关联内容无效
extract($arr, $flag)
* 1.功能: 将数组转为变量
* 2.参数: $arr(必),$flag常量参数(选),很多,要查手册,例如:EXTR_SKIP:冲突跳过
* EXTR_OVERWRITE: 如果有冲突,覆盖已有的变量,这是默认值;
* EXTR_SKIP: 如果有冲突,不覆盖已有的变量;
* EXTR_PREFIX_SAME: 如果有冲突,在变量名前加上前缀 prefix;
* EXTR_PREFIX_ALL: 给所有变量名加上前缀 prefix;
* EXTR_PREFIX_INVALID: 仅在非法/数字的变量名前加上前缀 prefix;
* EXTR_IF_EXISTS: 仅在当前符号表中已有同名变量时,覆盖它们的值。其它的都不处理。
* 举个例子,以下情况非常有用:定义一些有效变量,然后从 $_REQUEST 中仅导入这些已定义的变量。
* EXTR_PREFIX_IF_EXISTS: 仅在当前符号表中已有同名变量时,建立附加了前缀的变量名,其它的都不处理。
* 3.返回: 返回变量数量, 同时会生成与数组元素对应的变量,键名转为变量名,值为变量值
* 4.场景: 不要对不信任的数据进行转换,例如$_POST / $_GET...用户提交数据
compact(str1,str2...)
* 1.功能: 将变量转为数组,与extract()相反
* 2.参数: (1)用一个或多个字符串代表变量名, (2)可以使用数组包装变量名来简化
* 3.返回: 由变量组成的关联数组
* 4.场景: 组装多个零散变量统一处理,例如做为一条完整记录并存储到数据库中
explode($delimiter, $string, $limit)
* 1.功能:将规则字符串转为数组(用一个字符串来分割另一个字符串)
* 2.参数:$delimiter 分割字符串(必),$string被分割的字符串(必),$limit(选)返回数组元素数量
* 3.返回:由被分割后的字符串组成的数组
* 4.场景:大多用于人为创建一些有规律的字符串的处理,例如文件路径,邮箱,姓名等
implode($glue, $arr)
* 1. 功能: 将数组转为字符串 (用胶水字符$glue)
* 2. 参数: $glue(可选),$arr(必)
* 3. 返回: 字符串
* 4. 场景:
数组函数__切割与填充
array_slice($arr, $offset, $length, $bool)
* 1.功能: 从数组中的指定位置,返回指定数量的元素
* 2.参数: $arr(必),$offset(必)偏移量,$length(选)数量,$bool(选)是否保留键值关系
* 3.返回: 返回取出的元素组成的新数组
* 4.场景: 从大数组中截取数据
array_splice(&$arr, $offset, $length)
* 1.功能:从数组中移除或替换指定的元素,与array_slice()功能更强大
* 2.参数:$arr(必),$offset(必)偏移量,$length(选)数量,$replace(选)数组或字符串
* 3.返回: 返回一个包含有被移除单元的数组
array_chunk($arr,$size,$bool)
* 1.功能: 将大数组分为指定大小的若干个小数组
* 2.参数: $arr(必),$size(必),$bool(选)true保留键值关系
* 3.返回: 长度一致的小数组(最后一个例外)
* 4.场景: 超大数组分页输出
array_pad($arr,$size,$value)
* 1.功能:将数组用指定的数据,填充到指定的长度
* 2.参数:$arr(必),$size(必)长度, $value(必)值
* 3.返回:被填充后的数组的副本
* 4.场景: 填充默认值
数组与数据结构
* 一、堆栈操作
* 栈:仅允许在一端进行插入和删除的线性表结构,即先入后出,如同弹夹
* 1.array_push($arr,$val...) 入栈
* 2.array_pop($arr)出栈,返回栈顶元素,仅一个
* 二、队列操作
* 队列:仅允许在头部删除,尾部插入的线性表结构,即先入先出,如同排队
array_push()和array_shift()配合完成
头部增删除操作
* 1. array_unshift($arr,$var....):头部插入
* 2. array_shift($arr): 头部删除,配合array_push()进行队列操作
数组函数__回调处理
array_filter($arr, $callback):用回调过滤数组
* 1.功能: 回调处理每个元素,仅返回结果为true的元素,默认仅对值处理
* 2.参数: $arr(必),$callback(选),FLAG)
* 常量参数1:ARRAY_FILTER_USE_KEY,只处理键名
* 常量参数2:ARRAY_FILTER_USE_BOTH,键名与值都要处理
* 3.返回: 仅保存过滤过的新元素的数组
* 4.场景: 过滤非法数据
array_walk(&$arr, $callback($val,$key,$data),$data的值)
* 1.功能: 对数组中的每个元素的键值对进行处理
* 2.参数: 原生支持键值处理,不用常量标识符,附加参数可以扩展功能
* 3.返回: 可以使用引用传参直接修改原数组
* 4.场景: 用在对元素进行一些简单业务逻辑的场合
数组函数_排序
根据值排序
* 1.忽略键名:sort(),rsort(),usort()
* 1.sort($arr) 升序
* 2.rsort($arr) 降序
* 3.usort($arr,$callback) 回调
* 2.保留键名:asort(),arsort(),uasort()
* 1.asort($arr) 升序
* 2.arsort($arr) 降序
* 3.uasort($arr,$callback) 回调
根据键名排序
* 1. ksort()
* 2. krsort()
* 3. uksort()
数组函数__其它常用函数
range(5,20,2)
生成指定范围与步长的数组
array_unique($arr)
去掉数组中元素值重复的元素
array_fill(起始索引,元素数量,填充值)
array_fill(0,10,0)
创建一个有10个元素的数组,并用0进行初始化
array_rand($arr,3)
从数组中随机取出数据
注意:返回的是随机元素的键名,不是值
返回一个时返回标量的键名,一个以上返回键名数组
shuffle($arr)
将数组顺序随机打乱,直接更新原数组,非常适合验证码
array_merge($db_sys, $db_user)
合并多个数组,同键名自动覆盖,返回新数组
根据项目需要,合理选择适合的函数,组合出各种功能