PHP操作数组(合并、拆分、添加、查找、删除等)
1。合并数组的array_merge()函数将数组,返回一个联合数组。得到的数组开始的第一个输入数组参数,并由后面的数组参数的形式为强迫:
复制代码代码如下所示:
阵列(阵列array_merge array1 array2…arrayn)
这个函数合并一个或多个数组的单位,数组中的值附加到上一个数组的后面。
如果具有相同的字符串键输入数组,则值后面的键会覆盖前面的值。但是,如果数组中包含数字键,则后一个值将不会覆盖原始值,它将被附加到。
如果只对数组和数组是数字索引,则是连续重索引的关键。
复制代码代码如下所示:
< PHP
水果=数组(苹果
$ =数组()1
$卡= array_merge($水果,$编号);
print_r(美元卡);
输出
数组({ 0 } >苹果{ 1 } >香蕉{ 2 } =梨{ 3 } = 1 { 4 } = 2 { 5 } = 3)
>
2。附加阵列
(array_merge_recursive)和array_merge()函数一样,可以结合两个或两个以上的阵列结合在一起,形成一种共同的阵列。它们之间的区别是,当在函数的结果数组中已经存在的输入数组的一个主要采取不同的方法(。array_merge)覆盖现有的键/值对输入数组中,为当前密钥/值对的更换,和array_merge_recursive()将两值组合成一个新的阵列,和初始密钥作为数组的名字。还有一个数组中的递归添加数组的形式合并的形式:
复制代码代码如下所示:
阵列(数组array1,array2 array_merge_recursive阵列阵列arrayn {…})
该程序的示例如下:
复制代码代码如下所示:
< PHP
fruit1美元=阵列(苹果=红
fruit2美元=阵列(梨=黄
结果= array_merge_recursive美元(美元fruit1,fruit2美元);
print_r($结果);
输出
数组({数组}({ 0 } >红色> { 1 } >绿色}))
>
现在,关键苹果指向一个数组,它是两个颜色值的数组。
三.连接阵列
的array_combine()函数得到一个新的阵列,它由一组提交的相应值。形式:
复制代码代码如下所示:
数组(数组的键,array_combine数组)
注意,两个输入数组必须是相同的大小,不能是空的。
复制代码代码如下所示:
< PHP
name =数组()
$ =数组(红色
果为array_combine美元(美元美元的名字,颜色);
print_r($水果);
输出
数组({苹果>红色>香蕉>黄色>橙色>橙色)
>
4。array_slice分裂阵()
的array_slice()函数返回数组的一部分,开始在偏移+长度关键位置偏移和结局。其形式:
复制代码代码如下所示:
array_slice阵列(阵列、偏移{ int,int length })
当偏移量为正时,分裂将从从阵列开始的偏移位置开始。如果偏移量是负的,那么它会从偏移位置在数组的末尾开始。如果可选参数长度略,分裂将从偏移到数组的最后一个元素的开始。如果长度和正数,那么偏移+长度位置的数组开始的结束。相反,如果长度和负数,然后计数结束(input_array)- |长度|位置在数组的开始。考虑一个例子:
复制代码代码如下所示:
< PHP
水果=数组(苹果
美元($水果,array_slice子集= 3);
print_r($的子集);
输出
数组({ 0 } >梨{ 1 } =葡萄{ 2 } =柠檬{ 3 } =西瓜)
>
然后我们使用较低的负长度:
复制代码代码如下所示:
< PHP
水果=数组(苹果
子集= array_slice美元(美元的水果,2,2);
print_r($的子集);
输出
数组({ 0 } >橙色{ 1 } =梨{ 2 } =葡萄)
>
5。array_splice联合数组()
的array_splice()函数移除抵消所有元素的偏移量+长度结束,并返回被删除的元素在数组的形式的形式:
复制代码代码如下所示:
阵列(数组,数组偏移量array_splice {,} } {数组长度,更换)
当偏移量为正时,连接将从从阵列开始的偏移位置开始。当偏移量为负,加入从偏移位置在数组的末尾开始。如果可选的长度参数被忽略,所有的偏移位置和数组的末尾之间的元素将被删除。如果长度和积极价值,联合会在偏移+冷号位置在数组的开始。反之,如果长度是给定的,消极的,组合将结束在伯爵的位置(input_array)-在数组的开头长度。下面的例子如下:
复制代码代码如下所示:
< PHP
水果=数组(苹果
美元($水果,array_splice子集= 4);
print_r($水果);
print_r($的子集);
输出
数组({ 0 } >苹果{ 1 } >香蕉{ 2 } >橙色> { 3 } =梨)
数组({ 0 } >葡萄{ 1 } =柠檬{ 2 } =西瓜)
>
可选的参数替换可以用来指定一个数组来替换目标部分:
复制代码代码如下所示:
< PHP
水果=数组(苹果
美元array_splice子集=(美元2,水果,1,阵列(绿色苹果
print_r($水果);
print_r($的子集);
输出
数组({ 0 } >苹果{ 1 } = >香蕉{ 2 } =绿色苹果{ 3 } =红苹果{ 4 } =西瓜)
数组({ 0 } >橙色{ 1 } =梨{ 2 } =葡萄{ 3 } =柠檬)
>
从程序中可以清楚地看出,这个函数的用法是显而易见的。
6交叉口。阵列array_intersect()
的array_intersect()函数返回一个数组保存的关键,它仅仅是由价值观出现在第一个数组中出现其他输入数组的形式如下:
复制代码代码如下所示:
阵列(阵列array_intersect array1,array2 {数组,arrayn…})
下面的示例将返回所有的水果,出现在美元fruit1阵列和出现在fruit2美元美元和fruit3,太。
复制代码代码如下所示:
< PHP
fruit1美元=阵列(苹果
fruit2美元=阵列(梨
fruit3美元=阵列(西瓜
交叉口= array_intersect(fruit1美元美元美元美元,fruit2,fruit3);
print_r($路口);
输出
数组({ 0 } =苹果)
>
只有当这两个元素都是平等的,具有相同的数据类型将array_intersect()函数,认为它们是相同的。
7交叉口。关联数组array_intersect_assoc()
功能array_intersect_assoc()是基本相同的()array_intersect,但他也认为,在比较数组中的键。因此,只有在这个密钥/值对所有其他输入数组中出现的返回结果数组第一个数组。
形式如下:
复制代码代码如下所示:
阵列(阵列array_intersect_assoc array1,array2 {数组,arrayn…})
以下示例返回所有的键/值对中出现的fruit1阵列和美元在fruit2美元美元和fruit3:
复制代码代码如下所示:
< PHP
fruit1美元=阵列(红色=苹果
fruit2美元=阵列(黄=梨
fruit3美元=阵列(绿色=西瓜
交叉口= array_intersect_assoc(fruit1美元美元美元美元,fruit2,fruit3);
print_r($路口);
输出
数组({红} =苹果)
>
差集array_diff()8。阵列()
功能array_diff()返回出现在第一阵列而不是其他输入数组的值。这个功能是array_intersect相反()。
复制代码代码如下所示:
阵列(阵列array_diff array1,array2 {数组,arrayn…})
以下示例如下:
复制代码代码如下所示:
< PHP
fruit1美元=阵列(苹果
fruit2美元=阵列(梨
fruit3美元=阵列(西瓜
交叉口= array_diff(fruit1美元美元美元美元,fruit2,fruit3);
print_r($路口);
输出
数组({ 1 } =香蕉)
>
差集array_diff_assoc()()9。关联数组
功能array_diff_assoc()基本相同,但array_diff()也认为该数组的键相比。因此,密钥/值对仅在其他输入数组第一个阵列和不再出现,将返回结果数组的形式如下:
复制代码代码如下所示:
阵列(阵列array_diff_assoc array1,array2 {数组,arrayn…})
以下示例仅返回{黄} = >香蕉,因为关键/特殊这个值出现在fruit1美元,但不fruit2美元美元和fruit3存在。
复制代码代码如下所示:
< PHP
fruit1美元=阵列(红色=苹果
fruit2美元=阵列(黄=梨
fruit3美元=阵列(绿色=西瓜
交叉口= array_diff_assoc(fruit1美元美元美元美元,fruit2,fruit3);
print_r($路口);
输出
数组({ } =香蕉)
>
数组通常用于数组的过程。通常你需要遍历数组,把所有的键或值(或在同一时间得到的键和值),因此,PHP提供了一些功能来满足需求不奇怪。很多功能可以完成两个任务,不仅要把当前的指针位置的键或值,而且将指针移动到合适的位置。
10。获取当前数组键()
关键()函数返回到在input_array.the窗体的当前指针位置的关键如下:
复制代码代码如下所示:
混合键(阵列数组)
下面的示例迭代地处理数组和移动指针,以输出到果数组的键。
复制代码代码如下所示:
水果=数组()
当(键=键(水果)){
printf(%s
下一个(水果);
}
苹果
香蕉
注意,每次调用键()时指针都不动。为此,你需要使用下一个()函数,这个函数的唯一功能是完成指针的推送任务。
11。获取当前数组值当前()
当前()函数返回数组中当前指针位置的数组值:
复制代码代码如下所示:
混合电流(阵列阵列)
下面的例子被修改了,这次我们将得到数组值:
复制代码代码如下所示:
水果=数组()
而(果=当前(水果)){
printf(%s
下一个(水果);
}
红色
黄色
12。获取当前数组键并将每个值()
每()函数返回当前input_array键/值对的和进步的指针指向的位置。形式如下:
复制代码代码如下所示:
数组(数组)
返回的数组包含四个键,0个键和键包含键,键1和值包含相应的数据。如果每个(前面)指针的执行位于数组的结尾,则返回false。
复制代码代码如下所示:
水果=数组(苹果
print_r(每($水果));
数组({ 1 } >苹果{值> >苹果{ 0 } = 0 = { } = 0)
每个()通常与列表()一起使用以遍历数组:
复制代码代码如下所示:
水果=数组(苹果
重置(水果);
同时(列表($,$ $)=每个($水果))
{
回声;
}
0
香蕉1
2
3
因为将数组分配给另一个数组将重置原始数组指针,所以在这种情况下,如果我们在$果实中循环将分配给另一个变量,它将导致无限循环。
这就完成了数组的遍历。
搜索、筛选和搜索数组元素是数组操作的一些常见功能。
13。in_array()函数
in_array()的数组中总结一个特定的值函数搜索,并返回false,如果发现价值回到真实,形式如下:
复制代码代码如下所示:
布尔in_array(混合针阵列草堆{,布尔严格});
看看下面的例子,看看变量苹果是否已经在数组中,以及是否有一条信息:
复制代码代码如下所示:
美元=苹果的水果;
水果=数组(苹果
如果(in_array($水果,水果美元))
$水果已经在数组中了;
第三个参数是可选的,这迫使in_array()在搜索考虑的类型。
14。array_key_exists()函数
如果你发现在一个数组中指定的键,功能array_key_exists()返回true,否则返回false,形式如下:
复制代码代码如下所示:
布尔array_key_exists(混合键,数组);
下面的示例在数组键中搜索苹果,如果找到,它将输出果实的颜色:
复制代码代码如下所示:
美元水果苹果=红;
水果$ 香蕉=黄色;
美元水果梨=绿色;
如果(array_key_exists(苹果
printf(苹果的颜色是%s
}
苹果的颜色是红色。
15。array_search()函数
array_search()的数组中指定的值函数搜索,如果找到返回对应的密钥,或返回false。形式如下:
复制代码代码如下所示:
混合array_search(混合针阵列草堆{,布尔严格})
下面的示例在$果中搜索特定日期(12月7日),如果找到的话返回相关的状态信息。
复制代码代码如下所示:
美元水果苹果=红;
水果$ 香蕉=黄色;
水果$ {西瓜绿色};
成立array_search(美元=绿色
如果(成立)
printf(%s %s成立
西瓜是绿色的。
16。array_keys()函数
的array_keys()函数返回一个数组包含所有的键在搜索数组的形式如下:
复制代码代码如下所示:
array_keys阵列(阵列混合search_value {,})
如果可选的参数search_value在内,它将只返回匹配值的关键。下面的例子将输出所有阵列在$果阵发现:
复制代码代码如下所示:
美元水果苹果=红;
水果$ 香蕉=黄色;
水果$ {西瓜绿色};
钥匙= array_keys美元(美元的水果);
print_r($键);
数组({ 0 } { 1 } >苹果> { { 2 } >西瓜)
17。array_values()函数
的array_values()函数返回一个数组中的自动提供返回的数组的数值索引的所有值的形式如下:
复制代码代码如下所示:
array_values阵列(阵列)
下面的示例将获得$元素中每个元素的值:
复制代码代码如下所示:
美元水果苹果=红;
水果$ 香蕉=黄色;
水果$ {西瓜绿色};
价值=美元(美元array_values水果);
print_r(美元值);
数组({ 0 } { 1 } >红色>黄色{ { 2 } >绿色)
有时我们需要将一个数组或删除阵列的一部分,和PHP提供了一些功能的扩展和收缩的阵列。程序员谁想要模仿各种队列实现(先进先出,后进先出),这些功能可以方便。顾名思义,函数名称(推、流行、移,和位置)显然是从这些功能中体现。
传统的队列是一种数据结构。元素的缺失作为添加元素一样,被称为先进先出,或FIFO。相反,堆栈是另一个数据结构中删除元素的顺序是相反的,当他们加入,这成为了一出,还是后进先出法。
18。向数组头添加元素
的array_unshift()函数将元素添加到数组的头。所有的数字键已被修改,以反映他们的阵列中的新位置,但关联键不受影响。形式如下:
复制代码代码如下所示:
array_unshift(int数组,混合变量{,}混合变量)
下面的例子将两种水果添加到水果数组的前面。
复制代码代码如下所示:
水果=数组(苹果
array_unshift($水果,橙
水果=数组( 橙色)
19。在数组的结尾添加元素
对array_push()函数的返回值是int型,这是压后的数据数组中元素的个数。它可以将这个函数的多个变量作为参数传递,同时将多个变量压缩到数组中:
复制代码代码如下所示:
(数组数组,混合变量{混合变量…})
下面的示例将两个水果添加到水果数组中。
复制代码代码如下所示:
水果=数组(苹果
array_push($水果,橙
水果=数组()
20。从数组头中删除值
的array_shift()函数删除并返回数组中的元素,如果值的健康使用,所有相应的值会向下移动,并使用相关的关键阵列不受影响。它的形式是
复制代码代码如下所示:
混合array_shift(阵列)
下面的示例删除苹果数组中的第一个元素:
复制代码代码如下所示:
水果=数组(苹果
果为array_shift美元(美元的水果);
水果=数组(香蕉
苹果;
21。从数组的结尾删除元素
的array_pop()函数删除并返回数组的最后一个元素的形式:
复制代码代码如下所示:
混合array_pop(该target_array);
下面的示例删除$状态数组中的最后一个状态:
复制代码代码如下所示:
水果=数组(苹果
果为array_pop美元(美元的水果);
水果=数组()
梨;