学习经验}的数组的摘要

PHP有很多关于数组的功能,便于数组操作。

定义 uff1a

每个实体的数组包含两个项:键和值,它们可以查询获得相应的值。这些键可以是数字(数字)或关联(关联)键。数字键和值之间没有真正的连接,它们只是数组中的位置。

PHP提供了许多遍历数组的方法,而不是使用关联键或数字键,这都依赖于一种称为数组指针的特性。

创建一个数组

PHP不需要在创建数组时指定它的大小,因为PHP是一种松散的语言,因此不需要在使用数组之前声明它。

使用一对括号引用PHP数组的元素。数组没有大小限制,所以可以通过创建引用来创建数组,例如:


$ { 0 } =111;

$ { 1 } =222;





如果索引值是数值索引并增加,则在创建时也可以省略索引值。


${ = 111;

${ = 222;





可以使用数组()来创建数组,例如:


$国家=阵列('111 ',' 222 ');

$状态=阵列(话= > '111 ','两个' = > '222);





使用列表()提取数组,例如:


$状态=阵列(一','二','三');

清单(一美元,二美元,三美元)=国家;



数组中的三个值被分配到$ 1,$ 2和$三,可以直接输出。

用预定义的值范围填充数组,例如:


$ =范围(1, 6);

数组类似于$(1, 2, 3,4, 5, 6);

可选奇偶:$ =范围(1, 6, 2);






数组(1, 3, 5);

可选字母:$ =范围(A,F);

数组(A,B,C,D,E,F);





输出数组

输出数组内容最常用的方法是遍历各种数组键并输出相应的值。

foreach()函数可以很容易地被一个数组,每个值和键。

print_r()的功能是输出数组到屏幕的内容非常方便,prinf_r()函数接受一个变量并将其内容输出到标准输出,返回true,当它是成功的,或返回FALSE。

测试阵列

知道某一变量的is_array数组()函数。

的is_array()函数确定变量是否为数组,如果是,返回真,否则返回假。即使数组只包含一个值,它将被视为一个数组。

添加和删除数组元素

PHP提供了一些扩展和缩小数组的功能,并有助于模拟各种队列实现。

向数组头添加元素:

的array_unshift()函数将元素添加到数组的头。所有现有的数字键进行相应的修改以反映其在数组中的新位置,但关联密钥不受影响。


状态=阵列(11美元,22、33);

array_unshift(合状态,00);

/ /合状态=阵列('00、11、22、33);





阵中的Kamotomo:

的array_push()函数对数组的末尾添加值,然后返回数组中元素的总数增加了一个新的价值,同时,通过这个变量作为这个函数的输入参数,多变量(元素)压制成的形式的阵列:


状态=阵列(1美元,2);

array_push(合状态,3);

/ /合状态=阵列(1、2、3);





从数组头中删除元素:

的array_shift()函数删除并返回数组中发现的第一个元素,如果值的关键是使用,所有相应的值会向下移动,并使用相关的关键阵列不受影响,它的形式:


状态=阵列(1美元,2);

array_shift(合状态);

/ /合状态=阵列(2);



从数组的结尾删除元素:

的array_pop()函数删除并返回数组的最后一个元素,其格式为:


状态=阵列(1美元,2);

array_pop(合状态);

/ /合状态=阵列(1);





查找数组元素

搜索阵列:

的in_array()对数组中的一个特殊的价值功能的搜索,如果找到该值返回true,或返回false,这是在形式如下:


用户名=阵列('111 ',' 222 ',' 333 ');

$ = 111;

如果(in_array($str,$user)){

回声是;

其他{ }

回音否;

}





第三个参数是可选的,严格的,这迫使in_array()考虑型搜索时。

搜索关联数组:

如果你发现在一个数组中指定的键,功能array_key_exists()返回true,否则返回false,形式如下:


ARR =阵列(一美元= > 1,2= >,= > 3);

如果(array_key_exists(,$ ARR)){

echo'yes;

其他{ }

回音否;

}




搜索关联数组:

的array_search()函数搜索一个指定的值在数组中,如果发现返回相应的值,或者返回错误,这是在形式如下:


ARR =阵列(一美元= > 1,2= >,= > 3);

如果(array_search(1美元,ARR)){

echo'yes;

其他{ }

回音否;

}





获取数组键:

的array_key()函数返回一个数组包含所有的键在搜索阵列,这是在形式如下:


ARR =阵列(一美元= > 1,2= >,= > 3);

钥匙= array_keys美元($ ARR);

var_dump($键);

数组(3)0(3)一{{ 1{(3)两{ 2 }(5)三}





获取数组值:

的array_values()函数返回的所有值的数组自动提供了一个返回的数组的数组索引,如下:


ARR =阵列(一美元= > 1,2= >,= > 3);

价值= array_values美元($ ARR);

var_dump(美元值);

数组(3)0(1) 1{ 1{>字符串(1)2{ 2 } >字符串(1)3 }



foreach

通常,您需要遍历数组并获取键或值(或同时获取键和值),PHP提供一些功能以满足需求。

获取当前数组键:

键()函数返回数组中当前指针的位置的键,其形式如下:


ARR =阵列(一美元= > 1,2= >,= > 3);

美元关键=关键($ ARR);

var_dump($键);

字符串(3)





注意:每次调用键()时指针都不动。

获取当前数组值:

当前()函数返回数组中当前指针位置的数组值:


ARR =阵列(一美元= > 1,2= >,= > 3);

价值=当前($ ARR);

var_dump(价值);

字符串(1)1





获取当前数组键和值:

每个()函数返回数组当前的键/值对,并将指针推进到一个位置,如下所示:


ARR =阵列(一美元= > 1,2= >,= > 3);

var_dump(每($ ARR));

数组(4){ 1(1)1{值> }(字符串1)1 { 0 } >字符串(3)键一>字符串(3)}





返回的数组包含4个键,0个键和键包含键,键1和值包含相应的数据。如果每个(前面)指针的执行位于数组的结尾,则返回false。

移动阵列指针:

1)将指针移动到下一个数组位置。

下一个()函数返回数组值,后面放在当前数组指针下的位置。如果指针位于数组的最后位置,则返回false。


ARR =阵列(一美元= > 1,2= >,= > 3);

回声下($ ARR); / /输出2

回声下($ ARR); / /输出3





2)将指针移动到前一个数组位置。

沪指()函数返回当前指针前面的数组值,如果指针最初位于数组的第一个位置,然后返回false。

3)将指针移动到第一个数组位置。

重置()函数用于将数组指针设置为数组的开头。如果您需要在脚本中多次读取或处理数组,则经常使用此函数,并且在排序结束时经常使用此函数。

4)将指针移动到最后一个数组位置。

函数的结尾将指针移到数组的最后一个位置并返回最后一个元素。

将数组值传递给函数:

的array_walk()函数将数组中的元素的用户定义的函数,这个函数会如果需要执行对数组元素的特定行动的工作,形式如下:


功能测试(美元价值,美元关键){

$。


}

ARR =阵列(一美元= > 1,2= >,= > 3);

array_walk($ ARR测试);

1

2

3三



如果一个多维数组的使用,array_walk_recursive()函数介绍PHP5可以递归定义的函数对数组中的每个元素。

确定数组的大小和元素的唯一性。

确定数组的大小:

函数的作用是:返回数组中的总值。

如果可选的模式参数被启动(设置为1),数组将执行递归计数统计元素。计数(数组(),1);

注:sizeof()函数是计数的别名()的功能是一致的。

数组元素的出现频率:

的array_count_values()函数返回一个数组包含关联密钥/值对,这是在形式如下:


$ ARR =阵列(A,B,C,A);

RES = array_count_values美元($ ARR);

print_r(合物);

数组({ = } 2 1)。1



该值指示发生的频率。

确定唯一数组元素:

的array_unique()函数中删除所有重复的值在数组中,并返回唯一值的数组,如下:


$ ARR =阵列(A,B,C,A);

RES = array_unique美元($ ARR);

print_r(合物);

数组({ 0 } { 1 } = 2)



可选参数sort_flags(添加php5.2.9)可以决定如何排序数组的键。默认值可分为字符串,但也可以按数值排序(sort_numeric)或PHP默认排序方法(sort_regular),也可以根据定位环境分类(sort_locale_string)。

数组排序

反向数组元素排序:

的array_reverse()函数将数组中的元素的顺序,如下:


$ ARR =阵列(A,B,C);

RES = array_reverse美元($ ARR);

print_r(合物);

数组({ 0 } { 1 } = 2)



如果preserve_keys可选参数设置为true,按键映射保持,否则替换的值将对应相应的按键上的位置。


$ ARR =阵列(A,B,C);

RES = array_reverse美元(美元啊,真的);

print_r(合物);

数组({ 2 } { 1 } = 0)



替换数组键和值:

的array_flip()函数将取代的关键和相应的值在数组中的作用,这是如下:


$ ARR =阵列(A,B,C);

RES = array_flip美元($ ARR);

print_r(合物);

数组({ = } 0 2)。1



数组排序:

排序()函数对数组进行排序,元素按低到高的顺序排列,如下所示:

排序()函数不返回的有序阵列,但它只是在光斑阵列,无论结果如何,不返回任何值,sort_flags参数是可选的,修改的功能默认的行为,根据该参数所指定的值。

1)sort_numeric,通过数值排序,它是有用的排序整数和浮点数。

2)sort_regular,根据对应的ASCII值的元素分类。

3)sort_string,按正确的顺序,是亲近的人知道的元素排序。

的一种()函数是用来保持数组排序的初始密钥/值在相应的。

配合()函数作为排序相同()函数,以升序排列的数组排序,但它将保持键/值的关联,这是在形式如下:


$ ARR =阵列(C,B,A);

RES =美元美元ARR;

print_r($ ARR);

排序($ ARR);

print_r($ ARR);

Asort(合物);

print_r(合物);

数组({ 0 } = 1)2({ 0 }数组)= 1(2)}({ 2 }数组)= 1 { } 0



逆序排列数组

的rsort()函数作为排序相同()函数,但它排序的数组元素在相反的顺序(降序)。

如果使用可选的sort_flags参数,具体排序行为将由这个值确定。

在保持键/值对的情况下,逆序排列数组。

作为一种(),()函数的arsort保持键/值的关联,但它是对数组在相反的顺序。


$ ARR =阵列(C,B,A,D);

Arsort($ ARR);

print_r($ ARR);

数组({ 3 } { 0 } = d = 2){ 1 }



如果使用可选的sort_flags参数,具体排序行为将由这个值确定。

阵列的自然顺序

的natsort()函数提供了一种排序机制,相当于人的日常使用。

典型算法的排序如下:

p1.jpg,p10.jpg,p2.jpg,p20.jpg

的natsort()函数的使用如下:

p1.jpg,p2.jpg,p10.jpg,p20.jpg

区分大小写自然排序

如:

picture1.jpg,picture10.jpg,picture2.jpg,picture20.jpg

数组键顺序

的ksort()的阵列的功能键,如果成功则返回TRUE,失败将返回false

逆序排列数组键

krsort的操作()函数,ksort相同(),以及关键的排序,将以相反的顺序进行排序。

根据用户自定义规则进行排序

该模型()函数提供了另一种排序方法,使用用户自定义的比较算法中指定的函数对数组进行排序。如果您需要以某种方式对数据排序,和PHP的任何内置的排序功能不提供相应的支持,它需要的功能。

数组合并、拆分、连接和分解

组合阵列

的array_merge()函数将数组,返回一个联合数组。得到的数组开始的第一个输入数组参数和附加下列数组参数的顺序,形式如下:


$ ARR =阵列(C,B,A,D);

$ arr1 =阵列(1,2,3,4');

$ arr2 = array_merge(ARR美元美元,arr1);

print_r($ arr2);

数组({ 0 } { 1 } = 3)2 = { 4 } > 1 { 5 } = 2 { 6 } = 3 { 7 } = 4)



递归添加阵列

array_merge_recursive()的功能是array_merge相同(),可以将两个或多个阵列共同组成联合数组。两者的区别是,函数有不同的处理方法,在一个输入数组的键已经存在的结果array.array_merge()将覆盖键/值对前面的存在,代之以在当前输入数组的键/值对,并array_merge_recursive()相结合的两个值组成一个新的阵列和使用旧的密钥数组名的形式:


ARR =阵列(一美元= >c,' = > B);

前阵(三美元==>1,2=);

$ arr2 = array_merge_recursive(ARR美元美元,arr1);

print_r($ arr2);

数组({数组}({ 0 } = 1 { } = 2){三} = 1)



合并两个数组

的array_combine()函数生成一个新的阵列组成的一组文件和对应的值,这是在形式:


$ ARR =阵列(A,B);

$ arr1 =阵列(1,2);

$ arr2 = array_combine(ARR美元美元,arr1);

print_r($ arr2);

数组({ = 1 = { = } = 2)



分裂阵

的array_slice()函数返回数组的一部分,开始在偏移+长度关键位置偏移和结局。

当偏移为正,分辨率从偏移位置开始的数组;如果偏移量为负,分从偏移位置在数组的末尾。如果可选参数长度略,分裂将从偏移到数组的最后一个元素的开始。如果长度给出的正数,那么偏移+长度的位置在数组的开始的结束。相反,如果长度是给定的,消极的,最终计数(阵列)- |长度|位置在数组的开始。形式如下:


$ ARR =阵列(A,B,C,D);

美元($ ARR,array_slice arr1 = 2, 1);

print_r(合前);

数组({ 0 } = c)



交叉阵列

的array_intersect()函数返回一个数组保存的关键,它仅仅是由价值观出现在第一个数组中出现其他输入数组的形式如下:


$ ARR =阵列(A,B,C,D);

$ arr1 =阵列(A,B,e);

$ arr2 =阵列(A,F,D);

美元array_intersect ARR3 =(美元美元美元前,ARR,arr2);

print_r($ ARR3);

数组({ 0 } = a)



注意:只有当两个元素具有相同的数据类型,将array_intersect()认为他们是平等的。

关联数组的交集

array_intersect_assoc()是基本相同的()array_intersect,但它也考虑到在比较数组中的键。因此,只有在这个密钥/值对所有其他输入数组中出现的返回结果数组第一个数组的形式如下:


$ ARR =阵列(A = > A,B=>B,C = >c,会= >会);

$ arr1 =阵列(A = > A,C = > b,e);

$ arr2 =阵列(A = > A,B=>F,就= > B);

美元array_intersect_assoc ARR3 =(美元美元美元前,ARR,arr2);

print_r($ ARR3);

数组({ = })



查找关联数组的差集

功能array_diff_assoc()是基本相同的()array_diff。只有当它比较时,它还考虑数组的键。因此,只出现在第一个数组中,而不是在其他输入数组中的键值对将返回到结果数组:


$ ARR =阵列(A = > A,B=>B,C = >c,会= >会);

$ arr1 =阵列(A = > A,B=>B,e = > e);

$ ARR3 = array_diff_assoc($ ARR,$ arr1);

print_r($ ARR3);

数组({ = })



其他有用的数组函数

返回一组随机密钥

的array_rand()函数返回数组中的一个或多个键的形式:


$ ARR =阵列(A = > A,B=>B,C = >c,会= >会);

美元($ ARR,array_rand arr1 = 2);

print_r(合前);

数组({ 0 } = 1)



随机洗牌阵列元素

洗牌()函数将数组元素随机。

数组中的值和

的array_sum()函数将所有的值在数组返回到最后一笔,这是在形式如下:


$ ARR =阵列(A,32, 12,B);

$count = array_sum($ ARR);

print_r(美元计算);

44



如果数组中包含其他数据类型(如字符串),这些值将被忽略。

分区阵列

的array_chunk()函数将数组多维数组元素的大小由多个阵列的形式如下:


$ ARR =阵列(A,B,C,D);

美元($ ARR,array_chunk arr1 = 2);

print_r(合前);

数组({ 0 } =数组({ 0 } = { 1 } = B){ 1 } =数组({ 0 } = 1 }))