【微信开发】玩转PHP 数组用法!
-
数组的起始下标可以不从0开始,例子为从2开始。
$data = array(2=>'A','B','C'); 运行结果:$data = array(2=>'A',3=>'B',4=>'C');
-
unset() 删除整个数组 删除单个数组元素
初始数组:$data = array('name'=> '洛初','age'=> 24,'sex'=> '女');
unset($data); 运行结果:NULL
unset($data['name']); 运行结果:$data = array('age'=>24,'sex'=>'女');
-
list() 把数组中的值赋给一些变量
$data = array('洛初','女','24');
list($a,$b,$c) = $data; 运行结果:$a='洛初'; $b='女'; $c='24';
注释:该函数只用于数字索引的数组,且假定数字索引从 0 开始。
-
range() 自动生成一个包含指定范围单元的数据
$data = range(0,5); 运行结果:$data = array(0,1,2,3,4,5);
-
array_count_values(array) 用于统计数组中所有值出现的次数。 统计数组中相同元素的个数
$data = array('name'=> '洛初','age'=> 24,'sex'=> '女','nickname'=>'洛初');
array_count_values($data); 运行结果:array('洛初'=>2,'24'=>1,'女'=>1);
-
array_change_key_case(array,case) 把数组中所有键更改为小写或大写。 将数组中所有的键转变大小写
array必需。规定要使用的数组。
case 可选。可能的值:CASE_LOWER - 默认值。将数组的键转换为小写字母。CASE_UPPER - 将数组的键转换为大写字母。
$data = array('Name'=> '洛初','Age'=> 24,'Sex'=> '女');
array_change_key_case($data,CASE_UPPER);
运行结果:$data = array('NAME'=> '洛初','AGE'=> 24,'SEX'=> '女');
array_change_key_case($data,CASE_LOWER);
运行结果:$data = array('name'=> '洛初','age'=> 24,'sex'=> '女');
-
array_chunk(array,size,preserve_key) 把一个数组分割为新的数组块。 把数组分割为新的数组块
array:必需,数组;
size:必需,规定每个新数组包含多少个元素
preserve_key:可选,true - 保留原始数组中的键名。false - 默认。每个结果数组使用从零开始的新数组索引
$data = array('Name'=> '洛初','Age'=> 24,'Sex'=> '女');
array_chunk($data,2);
运行结果:$data = array(0=>array(0=>'洛初',1=>24),1=>array(0=>'女'));
-
array_column(array,column_key,index_key) 返回输入数组中某个单一列的值
-
column_key:必需,需要返回值的列。该参数也可以是NULL,此时将返回整个数组
index_key:可选,用作返回数组的索引或键的列。
$data = array( array('id'=>1,'name'=>'洛初'), array('id'=>2,'name'=>'洛秋'), array('id'=>2,'name'=>'洛末'),);
array_column($data,'name'); 运行结果:$data = array(0=>'洛初',1=>'洛秋',2=>'洛末');
-
array_combine(keys,values) 通过合并两个数组来创建一个新数组,其中的一个数组元素为键名,另一个数组元素为键值
keys:必需,键名数组; values:必需,键值数组;
$fname=array("Bill","Steve","Mark"); $age=array("60","56","31");
array_combine($fname,$age); 运行结果:array('Bill'=>60,'Steve'=>56,'Mark'=>31);
注释:键名数组和键值数组的元素个数必须相同!如果其中一个数组为空,或者两个数组的元素个数不同,则该函数返回 false。
-
填充数组
array_fill(index,number,value) 用给定的键值填充数组。 用键值填充数组
index:必需,被返回数组的第一个索引;
number:必需,规定要插入的元素数;
value:必需,规定供填充数组所使用的值 ;
array_fill(3,4,blue); 运行结果:array("3"=>"blue","4"=>"blue","5"=>"blue","6"=>"blue");
array_fill_keys(keys,value) 用指定键名的给定键值填充数组。 使用指定的键和值填充数组
keys:必需,使用该数组的值作为键。非法值将被转换为字符串;
value:必需,填充数组所使用的值;
$keys = array("a","b","c","d"); array_fill_keys($keys,"blue); 运行结果:array("a"=>"blue","b"=>"blue","c"=>"blue","d"=>"blue");
-
array_filter(array,callbackfunction) 用回调函数过滤数组中的元素
array必需。规定要过滤的数组。
callbackfunction必需。规定要使用的回调函数。
该函数把输入数组中的每个键值传给回调函数。如果回调函数返回 true,则把输入数组中的当前键值返回结果数组中。数组键名保持不变。
function test_odd($var){ return($var & 1); }
$a1=array("a","b",2,3,4); array_filter($a1,"test_odd"); 运行结果:array("3"=>"3");
-
array_flip(array) 交换数组中的键和值。 反转数组中所有的键以及它们关联的值
$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow"); array_flip($a1); 运行结果:array("red"=>"a","green"=>"b","blue"=>"c","yellow"=>"d");
-
array_key_exists(key,array) 检查指定的键名是否存在于数组中。 检查某个数组中是否存在指定的键名,如果键名存在则返回 true,如果键名不存在则返回 false
key必需。规定键名。 array必需。规定数组。
-
array_keys(array,value,strict) 返回数组中所有的键名。 返回包含数组中所有键名的一个新数组
array必需。规定数组。
value可选。您可以指定键值,然后只有该键值对应的键名会被返回。
strict 可选。与 value 参数一起使用。可能的值:true - 返回带有指定键值的键名。依赖类型,数字 5 与字符串 "5" 是不同的。 false - 默认值。不依赖类型,数字 5 与字符串 "5" 是相同的。
$a=array("Volvo"=>"XC90","BMW"=>"X5","Toyota"=>"Highlander");
array_keys($a); 运行结果:array("0"=>"Volvo","1"=>"BMW","2"=>"Toyota");
array_keys($a,"Highlander"); 运行结果:array("0"=>"Toyota");
$a=array(10,20,30,"10");
array_keys($a,"10",false); 运行结果:array("0"=>0,"1"=>3);
array_keys($a,"10",true); 运行结果:array("0"=>3);
-
array_map(myfunction,array1,array2,array3...) 把数组中的每个值发送到用户自定义函数,返回新的值。 将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组。
myfunction必需。用户自定义函数的名称,或者是 null。
array1必需。规定数组。 array2可选。规定数组。 array3可选。规定数组。
将函数名赋值为 null 时:
$a1=array("Dog","Cat");$a2=array("Puppy","Kitten");array_map(null,$a1,$a2);
运行结果:Array ( [0] => Array ( [0] => Dog [1] => Puppy ) [1] => Array ( [0] => Cat [1] => Kitten ) );
-
array_multisort(array1,sorting order,sorting type,array2,array3...) 对多个数组或多维数组进行排序。 返回排序数组,您可以输入一个或多个数组。函数先对第一个数组进行排序,接着是其他数组,如果两个或多个值相同,它将对下一个数组进行排序。
sorting order 可选。规定排列顺序。可能的值: SORT_ASC - 默认。按升序排列 (A-Z)。 SORT_DESC - 按降序排列 (Z-A)。
sorting type 可选。规定排序类型。可能的值:
SORT_REGULAR - 默认。把每一项按常规顺序排列(Standard ASCII,不改变类型)。
SORT_NUMERIC - 把每一项作为数字来处理。
SORT_STRING - 把每一项作为字符串来处理。
SORT_LOCALE_STRING - 把每一项作为字符串来处理,基于当前区域设置(可通过 setlocale() 进行更改)。
SORT_NATURAL - 把每一项作为字符串来处理,使用类似 natsort() 的自然排序。
SORT_FLAG_CASE - 可以结合(按位或)SORT_STRING 或 SORT_NATURAL 对字符串进行排序,不区分大小写。
注释:字符串键名将被保留,但是数字键名将被重新索引,从 0 开始,并以 1 递增。
您可以在每个数组后设置排序顺序和排序类型参数。如果没有设置,每个数组参数会使用默认值。
参数中的数组被当成一个表的列并以行来进行排序 - 这类似 SQL 的 ORDER BY 子句的功能。第一个数组是要排序的主要数组。数组中的行(值)比较为相同的话,就会按照下一个输入数组中相应值的大小进行排序,依此类推。
array_values(array) 返回数组中所有的值。
count(array,mode) 返回数组中元素的数目。
sizeof(array,mode) count() 的别名。
compact(var1,var2...) 创建包含变量名和它们的值的数组。
extract(array,extract_rules,prefix) 从数组中将变量导入到当前的符号表。
in_array(search,array,type) 检查数组中是否存在指定的值。
key(array) 从关联数组中取得键名。
range(low,high,step) 创建包含指定范围单元的数组。
shuffle(array) 将数组打乱。 该函数为数组中的元素分配新的键名。已有键名将被删除
array_pad(array,size,value) 用值将数组填补到指定长度。 如果您将 size 参数设置为负数,该函数会在原始数组之前插入新的元素。
array_pop(array) 删除数组的最后一个元素(出栈)。
array_push(array,value1,value2...)将一个或多个元素插入数组的末尾(入栈)。
array_shift(array) 删除数组中首个元素,并返回被删除元素的值。 如果键名是数字的,所有元素都会获得新的键名,从 0 开始,并以 1 递增
array_unshift(array,value1,value2,value3...) 在数组开头插入一个或多个元素。 该函数会返回数组中元素的个数。
array_product(array) 计算数组中所有值的乘积。
array_sum(array) 返回数组中值的和。
array_rand(array,number) 返回数组中一个或多个随机的键名。
array_reduce(array,myfunction,initial) 通过使用用户自定义函数,以字符串返回数组。
array_replace(array1,array2,array3...) 使用后面数组的值替换第一个数组的值。
array_replace_recursive(array1,array2,array3...) 递归地使用后面数组的值替换第一个数组的值。
array_merge(array1,array2,array3...) 把一个或多个数组合并为一个数组。
array_merge_recursive(array1,array2,array3...) 递归地合并一个或多个数组。
array_reverse(array,preserve) 以相反的顺序返回数组。对于整数键名,如果第二个参数指定为 true,则元素的键名保持不变,否则键名将丢失。
array_search(value,array,strict) 搜索数组中给定的值并返回键名。
array_slice(array,start,length,preserve) 返回数组中被选定的部分。
array_splice(array,start,length,array) 删除并替换数组中指定的元素。
array_unique(array) 删除数组中的重复值。 当几个数组元素的值相等时,只保留第一个元素,其他的元素被删除。
array_walk(array,myfunction,userdata...) 对数组中的每个成员应用用户函数。
array_walk_recursive(array,myfunction,parameter...) 对数组中的每个成员递归地应用用户函数。
-
排序
arsort(array,sortingtype) 对关联数组按照键值进行降序排序。
asort(array,sortingtype) 对关联数组按照键值进行升序排序。
krsort(array,sortingtype) 对数组按照键名逆向排序。
ksort(array,sortingtype) 对数组按照键名排序。
natcasesort(array) 用“自然排序”算法对数组进行不区分大小写字母的排序。
natsort(array) 用“自然排序”算法对数组排序。
rsort(array,sortingtype) 对数组逆向排序。
sort(array,sortingtype) 对数组排序。
uasort(array,myfunction) 使用用户自定义的比较函数对数组中的键值进行排序。
uksort(array,myfunction) 使用用户自定义的比较函数对数组中的键名进行排序。
usort(array,myfunction) 使用用户自定义的比较函数对数组进行排序。
-
数组指针的移动
current(array) 返回数组中的当前元素。
each(array) 返回数组中当前的键/值对。
end(array) 将数组的内部指针指向最后一个元素。
prev(array) 将数组的内部指针倒回一位。
next(array) 将数组中的内部指针向前移动一位。
reset(array) 将数组的内部指针指向第一个元素。
pos(array) current() 的别名。
注释: 如果数组包含空的单元,或者单元的值是 0 则该函数碰到这些单元也返回 FALSE。
要正确遍历可能含有空单元或者单元值为 0 的数组,请参见 each() 函数。
注释:each() 函数返回当前元素的键名和键值,并将内部指针向前移动。
该元素的键名和键值会被返回带有四个元素的数组中。两个元素(1 和 Value)包含键值,两个元素(0 和 Key)包含键名。
如果内部指针越过了数组范围,本函数将返回 FALSE。
-
比较数组,返回差集
array_diff(array1,array2,array3...) 比较数组,返回差集(只比较键值)。
array_diff_assoc(array1,array2,array3...) 比较数组,返回差集(比较键名和键值)。
array_diff_key(array1,array2,array3...) 比较数组,返回差集(只比较键名)。
array_diff_uassoc(array1,array2,array3...,myfunction) 比较数组,返回差集(比较键名和键值,使用用户自定义的键名比较函数)。
array_udiff(array1,array2,array3...,myfunction) 比较数组,返回差集(只比较值,使用一个用户自定义的键名比较函数)。
array_diff_ukey(array1,array2,array3…,myfunction) 比较数组,返回差集(只比较键名,使用用户自定义的键名比较函数)。
array_udiff_assoc(array1,array2,array3...,myfunction) 比较数组,返回差集(比较键和值,使用内建函数比较键名,使用用户自定义函数比较键值)。
array_udiff_uassoc(array1,array2,array3...,myfunction_key,myfunction_value) 比较数组,返回差集(比较键和值,使用两个用户自定义的键名比较函数)。
-
比较数组,返回交集
array_intersect(array1,array2,array3...) 比较数组,返回交集(只比较键值)。
array_intersect_assoc(array1,array2,array3...) 比较数组,返回交集(比较键名和键值)。
array_intersect_key(array1,array2,array3...) 比较数组,返回交集(只比较键名)。
array_intersect_uassoc(array1,array2,array3...,myfunction) 比较数组,返回交集(比较键名和键值,使用用户自定义的键名比较函数)。
array_intersect_ukey(array1,array2,array3...,myfunction) 比较数组,返回交集(只比较键名,使用用户自定义的键名比较函数)。
array_uintersect(array1,array2,array3...,myfunction) 比较数组,返回交集(只比较值,使用一个用户自定义的键名比较函数)。
array_uintersect_assoc(array1,array2,array3...,myfunction)比较数组,返回交集(比较键和值,使用内建函数比较键名,使用用户自定义函数比较键值)。
array_uintersect_uassoc(array1,array2,array3...,myfunction_key,myfunction_value)比较数组,返回交集(比较键和值,使用两个用户自定义的键名比较函数)。