我有这两个数组:
$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.所以,当同一个位置上有两个东西(同一个键)时,只计算一次。
是否可以合并/计算数组中的元素?
答案 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] => ''
*/
生成的数组将使用第一个数组中的非空元素填充,或者(如果检查非空白失败)使用第二个数组中的任何类型的元素填充 - 后者将提供作为一种后备。
答案 1 :(得分:0)
我想它不会比这短得多:
foreach ($array2 as $key->$value) {
$array1[$key] = $value;
}
如果您不想修改原始数组,只需执行两次循环并两次添加到第三个数组。