PHP语言结构
语言结构效率高的原因: 函数 —-(Zend引擎编译)—-> 语言结构
- echo
- die()
- isset()
- unset()
- empty()
- array()
- list()
- include
- require
- ** 注意:include_once(), require_once() 是函数
PHP数组函数
- array_change_key_case // 将数组中的所有键名修改为全部大写或小写, 不改变数字索引
1 |
array array_change_key_case( array $array [, int $case = CASE_UPPER|CASE_LOWER] ) |
- array_chunk // 将一个数组分割成多个
1 2 3 |
array array_chunk (array $array , int $size [, bool $preserve_keys = false] ) // size 风格单元 // preserve_keys: false(默认) 从0开始索引,true 不改变索引 |
- array_column // 返回数组中指定的一列
1 2 3 4 5 |
array array_column ( array $input , mixed $column_key [, mixed $index_key = null] ) // input 多维数组 // column 需要返回值的列 // index_key 返回数组的索引/键的列 # PHP 7.0.0 新增 对象支持 private 和 protected 属性,必须实现__get() 和 __isset() 魔术方法 |
创建数组
- array_combine // 创建一个数组,一个数组作为键名,另一个数组作为值
- array_fill_keys // 指定的’数组键’和’字符串值’填充数组
- array_fill // 用给定的值填充数组
- compact // 建立一个数组,包括变量名和他们的值
1 2 3 4 5 |
array compact ( mixed $valname1 [ , mixed $... ] ) // 对每个参数,compact() 在当前符号表中查找该变量名并将它的值添加到输出数组中,变量名成为键而变量的值成为改键的值。 // compact() 接受可变的参数数目。每个参数可以是一个包括变量名的字符串或者是一个包含变量名的数组,该数组中还可以包含其他单元内容为变量名的数组,compact()可以‘递归’处理。 // return :返回输出的数组,包含了添加的所有变量 ** 7.3.0 版本之前,如果字符串指向的变量为定义,compact() 会忽略。之后版本(包括7.3.0)会产生E_NOTICE级错误 |
- array_pad // 以指定长度将一个值填充‘进’数组
1 |
array array_pad ( array $array , int $size , mixed $value ) |
- range // 根据范围创建数组,包含指定的元素
1 2 3 4 |
array range ( mixed $start , mixed $end [ , number $step = 1 ] ) // step 如果设置了步长,会被作为单元之间的步进值。step应该为正数,默认值为1 // range (0, 12) => array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12) // range (f, a, 2) => array('f', 'd', 'b') |
计算
- array_count_values // 统计数组中所有的值的次数
- array_product // 计算数组中所有值得积
- array_sum // 对数组中的值求和
- count // 计算数组中的单元数目,或对象中的属性个数 别名函数 sizeof()
1 2 3 |
int count ( mixed $array_or_countable [ , int $mode = COUNT_NORMAL ] ) // 统计数组所有元素的数量,或者对象里的属性 // mode 如果设置了mode参数为COUNT_RECURSIVE(或1),count()将递归地对数组计数。 |
差集
- array_diff_assoc // 带索引检查计算数组的差集
- array_diff_uassoc // 和array_diff_assoc不同的是使用了用户自定义的回调函数,而不是内置函数
- array_diff_key // 使用键名比较计算数组的差集
- array_diff_ukey // 和array_diff_key 不同的是使用了用户自定义的回调方式,而不是内置函数
- array_diff // 不检查索引
交集
- array_intersect_assoc // 带索引计算数组的交集
- array_intersect_uassoc // 用回调函数带索引比较计算数组的交集
- array_intersect_key // 使用键名比较计算数组的交集
- array_intersect_ukey // 使用回调函数比较键名计算数组的交集
- array_intersect // 计算数组的交集(不检查索引)
判断
- array_key_exists
- array_key_first
- array_key_last
高阶函数
- array_reduce // 用回调函数迭代地将数组简化为单一的值 * 回调计算数组
1 2 3 4 5 6 7 8 |
mixed array_reduce( array $array , callable $callback [ , mixed $initial = NULL ] ) /** * mixed callback ( mixed $carry , mixed $item ) * @param carry 携带上次迭代的值;如果本次迭代是第一次, 那么这个值是initial * @param item 携带了本次迭代的值 */ // initial 如果指定了可选参数initial,该参数将在处理开始前使用,或者当处理结束,数组为空时的最后一个结果 // return 返回结果值 |
- array_filter // 用回调函数过滤数组中的单元 * return true|false
1 2 3 |
array array_filter ( array $array [ , callable $callback [ , int $flag = 0 ]] ) // 依次将array数组中的每个值传递到callback函数,如果callback函数返回true,则array数组的当前值会被包含在返回的结果数组中。 // 数组的键名保留不变 |
- array_map // 为数组每个元素应用回调函数 * 多数组回调
1 2 3 |
array array_map ( callable $callback , array $array1 [ , array $... ] ); // return: 返回数组,是为array1每个元素应用callback函数之后的数组 // callback函数形参的数量和传给array_map() 数组数量,两者必须一致 |
- array_walk // 使用用户自定义函数对数组中的每个元素做回调处理 * 引用操作
1 2 3 4 5 |
bool array_walk ( array &$array , callback $callback [ , mixed $userdata = NULL ] ) // return boolean 应用操作传入的数组 // array_walk() 不会受到array内部数组指针的影响,array_walk()会遍历整个数组而不管指针的位置 // callback 接受两个参数,array参数的值作为第一个,键名作为第二个 // userdata:如果提供该可选参数,将被作为第三个参数传递给 callback funcname |
合并数组
- array_merge_recursive // 递归地合并一个或多个数组
- array_merge // 合并一个或多个数组
排序
- sort // 对数组排序 * 不区分大小写 * 不保持索引
- usort
- asort // 对数组排序并保持索引关系
- uasort
- ksort
- uksort
- rsort // 对数组逆向排序
- arsort // 对数组逆向排序并保持索引关系
- krsort // 对数组按键进行逆向排序
- natsort // 用‘自然排序’算法对数组进行排序 * 保持原有键/值的关联
- natcasesort // 用‘自然排序’算法对数组进行不区分大小写字母的排序
- array_multisort // 对多个数组或多维数组进行排序
数组指针
- current // 返回数组中的当前单元 别名函数 pos
- each
- next
- prev
- reset
- end
栈
- array_pop // 后出
- array_push // 后入
- array_shift // 前出
- array_unshift // 前入
其他
- array_rand // 从数组中随机取出一个或多个单元
- array_flip // 交换数组中键和值
- shuffle // 打乱数组
1 |
bool shuffle ( array &$array ) |
- array_reverse // 返回单元顺序相反的数组
1 2 |
array array_reverse (array $array [, bool $preserve_keys = FALSE ]) // preserve_keys 设置为TRUE,将会保留数字的键;非数字的键不受这个设置的影响,总是会被保留 |
- array_search // 在数组中搜索给定的值,如果成功过则返回首个相应的键名
1 2 3 4 |
mixed array_search (mixed $needle , array $haystack [, bool $strict = false ]) // 在大海(haystack)中搜索针 (needle参数) // strict 如果可选参数设置为 TRUE, 则array_search() 将在haystack 中检查完全相同的元素,意味着同样严格比较 haystack 里needle的类型,并且对象需是同一个实例 ** 如果needle 在 haystack 中出现了不止一次,则返回第一个匹配的键,要返回所有匹配的键,应该用 array_keys() 将上可选参数 search_value 来代替. |
- array_keys // 返回数组中部分或者所有的键名
1 2 3 |
array array_keys (array $array [, mixed $search_value = null [, bool strict = false ]] ) // search_value,如果指定了这个参数,只有包含这个值得键才会返回 // strict 判断在搜索时是否使用严格的比较(===) |
- array_slice // 从数组中取出一段
1 2 3 4 5 |
array array_slice (array $array , int $offset [ , int $length = NULL [ , bool $preserve_keys = false] // offset 非负:序列将从此偏移量开始; 负数:序列将从array中距离末端这么远的地方开始 // length: 如果给出了length并为正,序列将具有这么多单元。如果length为负,则序列将终止在距离数组末端这么远的地方。如果省略,序列将从offset开始一直到array的末端。 // preseve_keys: array_slice 默认会将取出的序列数字索引从0开始排序,设置preserve_keys = true, 可以保持原来的数字索引 ** 如果offset参数大于array尺寸,就会返回空的array |
- array_splice // 去掉取数中的某一部分并用其他值取代
1 2 |
array array_splice ( array &$input , int $offset [ , int $length = count($input) [ , mixed $replacement = array() ]] ) // input中的数字键名不被保留 |
- array_unique // 移除数组中重复的值
1 2 3 |
array array_unique ( array $array [ , int $sort_flags = SORT_STRING ] ) // 键名保持不变 array_unique() 先将‘值’作为字符串排序,然后只保留第一个遇到的键名,忽略所有后面的重复键名。这并不意味着在未排序的array中同一值的第一个出现的键名会被保留 // sort_flags 可修改排序行为。 SORT_REGULAR(常规排序),SORT_NUMERIC(按照数字形式排序),SORT_STRING(按照字符串形式排序),SORT_LOCALE_STRING(根据当前的本地化设置,按照字符串比较) |
- extract // 从数组中将变量导入到当前的符号表
1 2 3 |
int extract (array &$array [, int $flags = EXTR_OVERWRITE [, string $prefix = NULL ]) // flags: EXTR_OVERWRITE EXTR_SKIP EXTR_PREFIX_SAME EXTR_PREFIX_ALL EXTR_PREFIX_INVALID EXTR_IF_EXISTS EXTR_PREFIX_IF_EXISTS // EXTR_REFS 作为引用提取,可以单独使用或用'OR'与其他任何标志结合使用 |
replace
- array_replace // 使用传递的数组替换第一个数组的元素
1 2 3 4 |
array array_replace (array $array1 [, array $... ] ) // array_replace() 函数使用后面数组元素相同的 key 的值替换 array1 数组中的值,如果一个键存在于第一个数组同时也存在于第二个数组,它的值将被第二个数组中的值替换, // 如果一个键存在于第二个数组,但是不存在于第一个数组,则会在第一个数组中创建这个元素, // 如果一个键仅存在于第一个数组,它将保持不变。如果传递了多个替换数组,他们将被按顺序处理,后面的数组将覆盖之前的值。 |
- array_replace_recursive // 使用传递的数组‘递归’替换第一个数组的元素
1 2 3 4 |
array array_replace_recursive (array $array1 [, array $...] ) // 和 array_replace 的区别 * array_replace_recursive() 是递归的,它将遍历数组并将相同的处理应用到数组的内部值 * 如果第一个数组中的值是标量, 它的值将被第二个数组中的值替换,它可能是一个标量或者数组。如果第一个数组和第二个数组中的值都是数组, array_replace_recursive() 函数将递归地替换他们各自的值。 |
扩展:获取数组第一个元素
- array_shift()
- current()
- each()
- array_key_first()
- 下标
- array_slice()
- list($a) = array()
本着互联网开源、开放的精神和宗旨,本站所有内容可以随便传播。如需转载或分享无需说明来源。
有任何疑问或烦恼,欢迎评论区讨论。
567
暂无回复数据