duannian4784 2013-11-12 21:35
浏览 35
已采纳

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

I have these two arrays:

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

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

if I do this to merge these arrays:

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

the output would be 4.

However, I need to get the number 3. So, when there are two things on the same position (same key) count it only once.

Is it possible to merge/count elements in arrays like that?

  • 写回答

2条回答 默认 最新

  • drtldt55533 2013-11-12 21:44
    关注

    One possible way to generate a 'union' of those arrays:

    $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.

    The resulting array will be filled either with non-empty elements from the first array or (if check for non-emptiness fails) with any type of elements from the second array - the latter will serve as a kind of fallback.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 gwas 分析-数据质控之过滤稀有突变中出现的问题
  • ¥15 没有注册类 (异常来自 HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))
  • ¥15 知识蒸馏实战博客问题
  • ¥15 用PLC设计纸袋糊底机送料系统
  • ¥15 simulink仿真中dtc控制永磁同步电机如何控制开关频率
  • ¥15 用C语言输入方程怎么
  • ¥15 网站显示不安全连接问题
  • ¥15 51单片机显示器问题
  • ¥20 关于#qt#的问题:Qt代码的移植问题
  • ¥50 求图像处理的matlab方案