在PHP中以不同的方式合并数组

时间:2013-11-12 21:35:36

标签: php arrays

我有这两个数组:

$array1 = array( '0' => 'apple', '1' => ''   , '2' => 'cucumber' );

$array2 = array( '0' => '',      '1' => 'bmw', '2' => 'chrysler' );

如果我这样做来合并这些数组:

$result_arr = array_merge($array1, $array2);
print_r( count ( array_filter($result_arr) ) );

输出为4。

但是,我需要得到数字3.所以,当同一个位置上有两个东西(同一个键)时,只计算一次。

是否可以合并/计算数组中的元素?

2 个答案:

答案 0 :(得分:2)

生成这些数组的“联合”的一种可能方法:

$first  = array( '0' => 'apple', '1' => ''   , '2' => 'cucumber', 3 => '');
$second = array( '0' => '',      '1' => 'bmw', '2' => 'chrysler', 3 => '');

$result = array_map(function($a, $b) {
  return $a ?: $b;
}, $first, $second);
print_r($result); 
/* 
[0] => 'apple'
[1] => 'bmw'
[2] => 'cucumber'
[3] => ''
*/

Demo

生成的数组将使用第一个数组中的非空元素填充,或者(如果检查非空白失败)使用第二个数组中的任何类型的元素填充 - 后者将提供作为一种后备。

答案 1 :(得分:0)

我想它不会比这短得多:

foreach ($array2 as $key->$value) {
    $array1[$key] = $value;
}

如果您不想修改原始数组,只需执行两次循环并两次添加到第三个数组。