「PHP数组处理函数:array_merge、array_diff、array_filter详解」
在PHP的开发中,数组处理是非常常见的操作。PHP提供了许多 针对数组的内置函数,其中包括array_merge、array_diff、array_filter等函数。这些函数可以让我们 更方便、快速的处理数组,从而提高代码的效率。下面我们来详细介绍一下这些函数的用法。
1. array_merge 函数
array_merge 函数可以将多个数组合并成一个数组,返回合并后的数组。这个函数需要注意的是,它 的操作是将数组中的元素按照顺序,添加到一个新数组中。如果原来的数组中存在 字符串键名,那么合并后数组的键名也会是字符串,如果原来的数组中存在重复的 数字键名,那么后面的键名会覆盖前面的键名。
下面是 array_merge 函数的用法:
① 只传递一个数组
如果只传递一个数组,会返回一个一模一样的新数组。
$arr=array ('name'=>'Tom','age'=>18);
$res=array_merge($arr);
var_dump($res);
输出结果为:
array(2) {
'name' =>
string(3) "Tom"
'age' =>
int(18)
}
② 传递两个数组
如果传递两个数组,会将数组合并成一个新数组,但是会按照顺序进行合并处理。
$arr1=array ('name'=>'Tom');
$arr2=array ('age'=>18);
$res=array_merge($arr1,$arr2);
var_dump($res);
输出结果为:
array(2) {
'name' =>
string(3) "Tom"
'age' =>
int(18)
}
③ 传递多个数组
可以传递多个数组,会依次按顺序将数组合并为一个数组。
$arr1=array ('name'=>'Tom');
$arr2=array ('age'=>18);
$arr3=array ('sex'=>'M');
$res=array_merge($arr1,$arr2,$arr3);
var_dump($res);
输出结果为:
array(3) {
'name' =>
string(3) "Tom"
'age' =>
int(18)
'sex' =>
string(1) "M"
}
2. array_diff 函数
array_diff 函数可以将多个数组之间的不同值进行差集运算,返回一个新数组,其中仅包含第 一个数组和后面每一个数组之间的差异部分。如果原数组中存在字符串键名,那么 差集函数会忽略它们。
下面是 array_diff 函数的用法:
① 传递两个数组
取 个数组在后面每一个数组中不存在的值。
$arr1=array ('name'=>'Tom','age'=>18);
$arr2=array ('name'=>'Tommy');
$res=array_diff($arr1,$arr2);
var_dump($res);
输出结果为:
array(1) {
['age'] =>
int(18)
}
② 传递三个数组
$arr1=array ('name'=>'Tom','age'=>18);
$arr2=array ('name'=>'Tommy');
$arr3=array ('age'=>'18');
$res=array_diff($arr1,$arr2,$arr3);
var_dump($res);
输出结果为:
array(0) {
}
此时的结果数组为空,原因是三个数组的键值都存在重复的情况。
3. array_filter 函数
array_filter 函数可以用于过滤数组中的元素,返回一个过滤后的数组。需要注意的是, 如果不指定回调函数,那么返回的数组中值为false的元素将被剔除。如果指定了回调函数, 那么仅当回调函数返回true,对应的元素才会被返回。
下面是 array_filter 函数的用法:
① 不指定回调函数
$arr=array ('name'=>'Tom','age'=>0,'sex'=>'M');
$res=array_filter($arr);
var_dump($res);
输出结果为:
array(2) {
['name'] =>
string(3) "Tom"
['sex'] =>
string(1) "M"
}
在这个例子中,由于age的值为0,会被视为false,因此array_filter结果 中并没有age这个元素。
② 指定回调函数
$arr=array ('Tom','Jerry','MingMing','Jack');
function get_length($value)
{
return strlen($value)>3;
}
$res=array_filter($arr,'get_length');
var_dump($res);
输出结果为:
array(3) {
[1] =>
string(5) "Jerry"
[2] =>
string(7) "MingMing"
[3] =>
string(4) "Jack"
}
在这个例子中,我们定义了一个回调函数get_length,该函数会返回输入字符串 的长度是否大于3,如果是则返回true,否则返回false。我们再调用array_filter函数 时,将这个函数名作为第二个参数,代表使用这个函数进行过滤操作,得到的结果被赋值给$res。
到这里,我们就介绍了array_merge、array_diff、array_filter这三个PHP 数组处理函数,这些函数对于数组操作来说非常实用。实际上,PHP中还有很多其他的数组 处理函数,你可以逐一学习它们,从而更好地掌握PHP的数组操作。
