欢迎访问宙启技术站
智能推送

「PHP数组处理函数:array_merge、array_diff、array_filter详解」

发布时间:2023-06-13 12:40:55

在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的数组操作。