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 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 路易威登官网 里边的参数逆向
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?
  • ¥50 需求一个up主付费课程
  • ¥20 模型在y分布之外的数据上预测能力不好如何解决
  • ¥15 processing提取音乐节奏
  • ¥15 gg加速器加速游戏时,提示不是x86架构