php新建数组函数,php加入数组
php 常用的数组函数都有哪些? 作用是什么?有什么特点? 怎么使用?
php常用的数组函数的作用特点如下:
array_change_key_case ? ????-- 返回字符串键名全为小写或大写的数组
array_chunk ? ? ? ? ? ? ????-- 将一个数组分割成多个
array_combine ? ? ? ? ? -- 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
array_count_values ? ? ?-- 统计数组中所有的值出现的次数
array_diff_assoc ? ? ? ?-- 带索引检查计算数组的差集
array_diff_key ? ? ? ? ?-- 使用键名比较计算数组的差集
array_diff_uassoc ? ? ? -- 用用户提供的回调函数做索引检查来计算数组的差集
array_diff_ukey ? ? ? ? -- 用回调函数对键名比较计算数组的差集
array_diff ? ? ? ? ? ? ?-- 计算数组的差集
array_fill_keys ? ? ? ? -- 使用指定的键和值填充数组
array_fill ? ? ? ? ? ? ?-- 用给定的值填充数组
array_filter ? ? ? ? ? ?-- 用回调函数过滤数组中的单元
array_flip ? ? ? ? ? ? ?-- 交换数组中的键和值
array_intersect_assoc ? -- 带索引检查计算数组的交集
array_intersect_key ? ? -- 使用键名比较计算数组的交集
array_intersect_uassoc ?-- 带索引检查计算数组的交集,用回调函数比较索引
array_intersect_ukey ? ?-- 用回调函数比较键名来计算数组的交集
array_intersect ? ? ? ? -- 计算数组的交集
array_key_exists ? ? ? ?-- 检查给定的键名或索引是否存在于数组中
array_keys ? ? ? ? ? ? ?-- 返回数组中所有的键名
array_map ? ? ? ? ? ? ? -- 将回调函数作用到给定数组的单元上
array_merge_recursive ? -- 递归地合并一个或多个数组
array_merge ? ? ? ? ? ? -- 合并一个或多个数组
array_multisort ? ? ? ? -- 对多个数组或多维数组进行排序
array_pad ? ? ? ? ? ? ? -- 用值将数组填补到指定长度
array_pop ? ? ? ? ? ? ? -- 将数组最后一个单元弹出(出栈)
array_product ? ? ? ? ? -- 计算数组中所有值的乘积
array_push ? ? ? ? ? ? ?-- 将一个或多个单元压入数组的末尾(入栈)
array_rand ? ? ? ? ? ? ?-- 从数组中随机取出一个或多个单元
array_reduce ? ? ? ? ? ?-- 用回调函数迭代地将数组简化为单一的值
array_replace_recursive -- 使用传递的数组递归替换第一个数组的元素
array_replace ? ? ? ? ? -- 使用传递的数组替换第一个数组的元素
array_reverse ? ? ? ? ? -- 返回一个单元顺序相反的数组
array_search ? ? ? ? ? ?-- 在数组中搜索给定的值,如果成功则返回相应的键名
array_shift ? ? ? ? ? ? -- 将数组开头的单元移出数组
array_slice ? ? ? ? ? ? -- 从数组中取出一段
array_splice ? ? ? ? ? ?-- 把数组中的一部分去掉并用其它值取代
array_sum ? ? ? ? ? ? ? -- 计算数组中所有值的和
array_udiff_assoc ? ? ? -- 带索引检查计算数组的差集,用回调函数比较数据
array_udiff_uassoc ? ? ?-- 带索引检查计算数组的差集,用回调函数比较数据和索引
array_udiff ? ? ? ? ? ? -- 用回调函数比较数据来计算数组的差集
array_uintersect_assoc ?-- 带索引检查计算数组的交集,用回调函数比较数据
array_uintersect_uassoc -- 带索引检查计算数组的交集,用回调函数比较数据和索引
array_uintersect ? ? ? ?-- 计算数组的交集,用回调函数比较数据
array_unique ? ? ? ? ? ?-- 移除数组中重复的值
array_unshift ? ? ? ? ? -- 在数组开头插入一个或多个单元
array_values ? ? ? ? ? ?-- 返回数组中所有的值
array_walk_recursive ? ?-- 对数组中的每个成员递归地应用用户函数
array_walk ? ? ? ? ? ? ?-- 对数组中的每个成员应用用户函数
array ? ? ? ? ? ? ? ? ? -- 新建一个数组
arsort ? ? ? ? ? ? ? ? ?-- 对数组进行逆向排序并保持索引关系
asort ? ? ? ? ? ? ? ? ? -- 对数组进行排序并保持索引关系
compact ? ? ? ? ? ? ? ? -- 建立一个数组,包括变量名和它们的值
count ? ? ? ? ? ? ? ? ? -- 计算数组中的单元数目或对象中的属性个数
current ? ? ? ? ? ? ? ? -- 返回数组中的当前单元
each ? ? ? ? ? ? ? ? ? ?-- 返回数组中当前的键/值对并将数组指针向前移动一步
end ? ? ? ? ? ? ? ? ? ? -- 将数组的内部指针指向最后一个单元
extract ? ? ? ? ? ? ? ? -- 从数组中将变量导入到当前的符号表
in_array ? ? ? ? ? ? ? ?-- 检查数组中是否存在某个值
key ? ? ? ? ? ? ? ? ? ? -- 从关联数组中取得键名
krsort ? ? ? ? ? ? ? ? ?-- 对数组按照键名逆向排序
ksort ? ? ? ? ? ? ? ? ? -- 对数组按照键名排序
list ? ? ? ? ? ? ? ? ? ?-- 把数组中的值赋给一些变量
natcasesort ? ? ? ? ? ? -- 用“自然排序”算法对数组进行不区分大小写字母的排序
natsort ? ? ? ? ? ? ? ? -- 用“自然排序”算法对数组排序
next ? ? ? ? ? ? ? ? ? ?-- 将数组中的内部指针向前移动一位
pos ? ? ? ? ? ? ? ? ? ? -- current 的别名
prev ? ? ? ? ? ? ? ? ? ?-- 将数组的内部指针倒回一位
range ? ? ? ? ? ? ? ? ? -- 建立一个包含指定范围单元的数组
reset ? ? ? ? ? ? ? ? ? -- 将数组的内部指针指向第一个单元
rsort ? ? ? ? ? ? ? ? ? -- 对数组逆向排序
shuffle ? ? ? ? ? ? ? ? -- 将数组打乱
sizeof ? ? ? ? ? ? ? ? ?-- count 的别名
sort ? ? ? ? ? ? ? ? ? ?-- 对数组排序
uasort ? ? ? ? ? ? ? ? ?-- 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联
uksort ? ? ? ? ? ? ? ? ?-- 使用用户自定义的比较函数对数组中的键名进行排序
usort ? ? ? ? ? ? ? ? ? -- 使用用户自定义的比较函数对数组中的值进行排序
关于如何使用,那是要根据使用者需求来衡量,不能一言概括
使用语法如下:
?php
????$arr?=?array('Hello','World!');
????$arr?=?implode(',',$arr);
????
????echo?$arr;
?
结果是:HelloWorld!
如果你想更多的了解php的数组函数,我建议你详细地去看看php手册
php手册官网:
php里面怎么新建数组?
php里面新建数据可以通过两种方式,一种是通过array函数来创建,另一种就是通过赋值[]来创建。
?php
$arr1?=?array(1,2,3,4);
var_dump($arr1);
$arr2[0]?=?1;
$arr2[1]?=?2;
$arr2[2]?=?3;
$arr2[3]?=?4;
var_dump($arr2);
php如何创建包含所有大写字母的数组
新建一个php文件,命名为test.php,用于讲解php如何将数组中所有字母改为大写。
在test.php文件中,使用header()方法将页面的编码格式设置为utf-8。
在test.php文件中,定义一个changeAbc函数,使用strtoupper函数将传入的参数转换为大写字母,并使用return将参数返回。
在test.php文件中,创建一个小写字母数组,用于测试。
在test.php文件中,使用array_map函数使用函数changeAbc对数组进行转换大写字母处理,最后,使用print_r输出结果。
在浏览器打开test.php文件,查看结果。
php创建数组的几种方法
数组在PHP中包含2种表现,
一种是普通数组,定义方式有二种,
第一:
$a = array("aa","bb","cc")
第二:
$a[] = "aa";
$a[] = "bb"
$a[] = "cc";
一般用数组遍历的方式可以打印出所有数据,也可以使用数组的位标(从0开始计算)自定义打印,比如:
$a[0]的值就是aa,$a[1]的值是"bb"
数组遍历自己搜索下,也是2种方式
另外是别名数组,定义也是2种
第一:
$a = array("aa"= "11","bb"="22")
第二:
$a["aa"] = "11";
$a["bb"] = "22";
使用数组的位标在别名数组就不行了,必须用别名
$a[0]就取不到值了,$a[“aa”]才能取到值"11"
数组遍历其中foreach有点不一样,自己搜索下
PHP面试题2--常用的数组函数
一,数组操作的基本函数
1. 数组的键名与值
? ? array_values($arr);? 获得数组的值
? ? array_keys($arr); 获得数组的键名
? ? array_flip($arr); 数组的值与键名互换(如果有重复前面的会被后面的覆盖)
? ? in_array("apple",$arr); 在数组中检索apple
? ? array_search("apple",$arr); 在数组中检索apple,如果存在返回键名
? ? array_key_exists("apple",$arr); 检索给定的键名是否存在数组中
? ? isset($arr["apple"]); 检索给定的键名是否存在数组中
????array_unique() 删除数组中的重复值
2. 数组的内部指针
? ? current($arr); 返回数组中的当前单元
? ? pos($arr); 返回数组中的当前单元
? ? key($arr); 返回数组中的当前单元的键名
? ? prev($arr); 将数组中的内部指针倒回一位
? ? next($arr); 将数组中的内部指针向前移动一位
? ? end($arr);? 将数组中的内部指针指向最后一单元
? ? reset($arr); 将数组中的内部指针指向第一单元
? ? each($arr); 将返回数组当前元素的一个键/值的构造数组,并使数组指针向前移动一位
? ? list($key,$value) = each($arr); 获得数组当前元素的键名和值
3. 数组和变量之间的转换
? ? extract(array,extract_rules,prefix); 函数从数组中将变量导入到当前符号表。该函数使用数组键名作为变量名,使用数组键值作为变量值。针对数组中的每个元素,将在当前符号表中创建对应的一个变量。
? ? compact(var1,var2...); 创建一个包含变量名和它们的值的数组。任何没有变量名与之对应的字符串都被略过。
二,数组的分段和填充
1. 数组的分段
? ? array_slice(array,start,length,preserve); 返回数组中的选定部分。如果数组中有字符串键名,返回的数组将保留键名。
? ? array_splice(array1,start,length,array2); 从数组中移除选定的元素,并用新元素取代它。函数返回被移除元素的数组,如果函数没有移除任何元素(length=0),则替代数组将从start参数的位置插入。不保留替代数组的键名。
2. 数组的分割
? ? array_chunk(array,size,preserve_keys); 把一个数组分割为新的数组块。
3. 数组的填充
? ? array_pad(array,size,value); 将指定数量的带有指定值的元素插入到数组。如果将size参数设置为负数,该函数会在原始数组之前插入新的元素。如果size参数小于原始数组的长度,该函数不会删除任何元素。
三,数组与栈
????array_push(array,value1,value2...); 向数组尾部插入一个或多个元素。即使数组有字符串键名,添加的元素将是数字键名。
????array_pop(array); 删除数组的最后一个元素。返回值是数组的最后一个值,即,被删除的元素值。如果数组为空,或者不是一个数组,将返回NULL。
四,数组和队列
? ? array_shift(array); 用于删除数组中的第一个元素,并返回被删除的元素。如果键名是数字,所有的元素都将获得新的键名,从0开始,并以1递增。
? ? array_unshift(array,value1,value2,value3...); 用于向数组插入新元素,新数组的值将被插入到数组的开头。数值键名将从0开始,以1递增。字符串键名将保持不变。
五,回调函数
????array_walk(array,myfunction,parameter...); 将数组中的每个元素应用到 用户自定义函数。在函数中,数组的键名和键值是参数。可以通过把用户自定义函数的第一个参数指定为引用:$value,来改变数组元素的值。
????array_map(myfunction,array1,array2,array3...); 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新的值的数组。myfunction可以为null
????array array_filter ( array $array [, callable $callback [, int $flag = 0 ]] ); 用回调函数过滤数组中的元素。该函数把输入数组中的每个键值传给回调函数。如果回调函数返回true,则把输入数组中的当前键值返回给结果数组,数组键名保持不变。
????array_reduce(array,myfunction,initial); 函数发送数组中的值到用户自定义函数,并返回一个字符串。如果数组是空的或者初始值未传递,该函数返回null。initial为可选,规定发送到函数处理的第一个值。
六,数组的计算
1. 数组元素的求和
????array_sum(array); 返回数组中的所有值的和
2. 数组的合并
????array_merge(array1,array2,array3...); 用于把一个或多个数组合并成一个数组。如果两个或更多个数组有相同的键名。则最后的数组会覆盖其他数组。如果向函数输入了一个数组,且键名是整数,则该函数会返回带有整数键名的新数组,其键名以0开始进行重新索引。
????array_merge_recursive(array1,array2,array3...); 用于把一个或多个数组合并为一个数组,该函数与array_merge()函数之间的不同是在处理两个或多个数组元素有相同的键名的情况下,array_merge_recursive()不会进行键名覆盖,而是将多个相同键名的值递归组成一个数组。如果您仅仅向 array_merge_recursive() 函数输入一个数组,结果与 array_merge() 相同。
3. 数组的差集
????array_diff(array1,array2,array3...); 函数用于比较两个(或更多个)数组的值,并返回差集。该函数比较两个(或更多个)数组的值(key=value中的value),并返回一个差集数组,该数组包括了所有在被比较的数组(array1)中,但是不在任何其他参数数组(array2或array3等等)中的值。
????array_diff_assoc(array1,array2,array3...); 函数用于比较两个(或更多个)数组的键名和键值,并返回差集。该函数比较两个(或更多个)数组的键名和键值,并返回一个差集数组,该数组包括了所有在被比较的数组(array1)中,但是不在任何其他参数数组(array2 或 array3 等等)中的键名和键值。
4. 数组的并集
array_intersect(array1,array2,array3...); 函数用于比较两个(或更多个)数组的键值,并返回交集。该函数比较两个(或更多个)数组的键值,返回一个交集数组,该数组包括了所有在被比较的数组(array1)中,同时也在任何其他参数数组(array2 或 array3 等等)中的键值。
array_intersect_assoc(array1,array2,array3...); 函数用于比较两个(或更多个)数组的键名和键值,并返回交集。该函数比较两个(或更多个)数组的键名和键值,并返回一个交集数组,该数组包括了所有在被比较的数组(array1)中,同时也在任何其他参数数组(array2 或 array3 等等)中的键名和键值。
七,数值的排序
array_multisort():? 对多个数组或多维数组进行排序
sort(): 以升序对数组排序
rsort(): 以降序对数组排序
asort(): 根据值,以升序对关联数组进行排序
ksort(): 根据键,以升序对关联数组进行排序
arsort(): 根据值,以降序对关联数组进行排序
krsort(): 根据键,以降序对关联数组进行排序
资料参考:
PHP 关联数组操作太麻烦,试试 WPJAM Basic 内置的数组处理函数
PHP 有很多非常好用的数组处理函数,PHP 数组函数官方文档都有 80 多个,但是在使用过程,有一些数组的操作使用比较多,我就把这些函数整理成工具函数,然后整合到 WPJAM Basic 中,方便自己的二次开放时候使用,现在整理放出来,如果你和我一样基于 WPJAM Basic 进行二次开发,也可以使用:
PHP 从关联数组中移除指定的键值对,一般使用 unset 函数,比如:
如果要移除多个键值对,就要调用多次的 unset 函数,所以就合并成一个函数 :
这样就可以通过下面方式移除键值对了:
如果仅仅移除一个键值对,还可以直接传递字符串:
我们使用 array_filter 对数组进行过滤的时候,是不会递归调用的,意思如果其中元素也是数组的时候,是不会进行同样的过滤的操作。
输出结果为:
但是我们在一些数据处理的时候,比如后台字段提交的时候,我们希望过滤掉 null 的值,如果元素也是一个关联数组的时候,我们希望关联数组元素中的 null 的值也会过滤掉。所以我们就写了 wpjam_array_filter 这个函数,实现 array_filter 递归调用:
同样的数组:
输出结果为:
PHP 的 array_filter() 函数让我们可以通过回调函数来过滤数组,但是返回的是过滤后的数组,但是很多时候,我们只是简单的要求 返回过滤之后数组的第一个元素 :
使用非常简单的:
如果我们要合并的数组是多维的关联数组,那么使用 array_merge_recursive() 函数进行合并的话,不会进行键名覆盖,而是将多个相同键名的值递归合并成一个数组。
输出结果:
其实我们希望子数组里面的相同的值覆盖,据此我们写了一个函数,用来深度合并多维数组:
相同的数组进行合并:
得到的结果是:
一般不推荐使用 wpjam_array_merge 对多维索引数组进行合并。
要从关联数组中移除并返回指定的键值,一般需要两步操作,先取出,然后 unset 数组中的键值对:
如果每次都这么操作,有点烦人,所以就把这两个步骤合成一个函数,并且还可以设置数组中无此键对应的元素的时候的默认值。
然后直接调用即可:
PHP 关联数组可以通过三种方式插入新元素:
由此可见,关联数组插入元素是无法指定位置的,只能插在最前或者最后面,所以这个函数就是实现 向关联数组插入 元素时候指定的 Key 之前 :
比如下面在 $columns 的 'author' 之前插入 ['page_title'='页面标题'] :