博客列表 >常用数组处理函数

常用数组处理函数

不羁PHP学习笔记
不羁PHP学习笔记原创
2018年11月29日 16:16:301438浏览

数组输出函数

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)

合并多个数组,同键名自动覆盖,返回新数组


根据项目需要,合理选择适合的函数,组合出各种功能

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