6.5.17 PHP拆分、合并、分解与结合数组函数2
拆分、合并、分解与结合数组
array_slice -- 从数组中取出一段
语法: array array_slice ( array array, int offset [, int length [, bool preserve_keys]] )
array_slice() 返回根据 offset 和 length 参数所指定的 array 数组中的一段序列。
如果 offset 非负,则序列将从 array 中的此偏移量开始。如果 offset 为负,则序列将从 array 中距离末端这么远的地方开始。
如果给出了 length 并且为正,则序列中将具有这么多的单元。如果给出了 length 并且为负,则序列将终止在距离数组末端这么远的地方。如果省略,则序列将从 offset 开始一直到 array 的末端。
array_splice -- 把数组中的一部分去掉并用其它值取代
语法:array array_splice ( array &input, int offset [, int length [, array replacement]] )
array_splice() 把 input 数组中由 offset 和 length 指定的单元去掉,如果提供了 replacement 参数,则用 replacement 数组中的单元取代。返回一个包含有被移除单元的数组。注意 input 中的数字键名不被保留。
如果 offset 为正,则从 input 数组中该值指定的偏移量开始移除。如果 offset 为负,则从 input 末尾倒数该值指定的偏移量开始移除。
如果省略 length,则移除数组中从 offset 到结尾的所有部分。
如果给出了 replacement 数组,则被移除的单元被此数组中的单元替代。
array_combine -- 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
语法:array array_combine ( array keys, array values )
返回一个 array,用来自 keys 数组的值作为键名,来自 values 数组的值作为相应的值。
如果两个数组的单元数不同或者数组为空时返回 FALSE。
•rray_merge -- 合并一个或多个数组
–语法: array array_merge ( array array1 [, array array2 [, array ...]] )
–array_merge() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
–如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。
–如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。
•
array_intersect -- 计算数组的交集
语法 array array_intersect ( array array1, array array2 [, array ...] )
array_intersect() 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意键名保留不变。
array_diff -- 计算数组的差集
语法:array array_diff ( array array1, array array2 [, array ...] )
array_diff() 返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。注意键名保留不变。
例 1.php
<?php
//下标相同的会覆盖, 是前面覆盖后面的
$a = array("a", "b", "c");
$b = array(5=>10, 11, 12);
$c = $a + $b;
var_dump($c);
例 2.php
<?php
//下标相同的会覆盖, 是前面覆盖后面的
$a = array("a", "one"=>"b", "c");
$b = array(10, "one"=>11, 12);
$c = array_merge($a , $b);
var_dump($c);
例3.php
<?php
//下标相同的会覆盖, 是前面覆盖后面的
$a = array("a", 5=>"b", "c");
$b = array(10, "one"=>11, 12);
$c = array_merge($a);
var_dump($c);
例5.php
<?php
$a = array(10, 11, 12, 13, 14);
$b = array(5, 6, 12, 15, 14);
print_r(array_intersect($a, $b));
例 test.php
<?php
$a = array(5, 6, 10, 11, 12, 13, 14);
$b = array(5, 6, 12, 15, 14);
$min = (count($a) > count($b)) ? count($b) : count($a);
$narr = array();
for($i=0; $i < $min; $i++) {
if($a[$i]==$b[$i]) {
$narr[] = $a[$i];
}else{
break;
}
}
//print_r(array_intersect($a, $b));
例 test.php
<?php
$a = array(5, 6, 10, 11, 12, 13, 14);
$b = array(5, 6, 12, 15, 14);
print_r(array_diff($a, $b));