drbii0359 2015-06-02 09:51
浏览 120
已采纳

使用键合并两个不同长度的数组,并将0填充为空

I want to merge two arrays with keys in PHP. If no key defined for any array it should fill the value by zero. I wanted solution like

array_merge_recursive($a1, $a2)

But it does not produce the required output. I have coded following. It works but I want to know if there are any other good and efficient solution like array_merge_recursive();

function array_combine_zero_fill($a1,$a2){
    $a3=array();
    foreach($a1 as $k=>$v){
        $a3[$k]['doc1']=$v;
        $a3[$k]['doc2']=array_key_exists($k, $a2) ? $a2[$k]:0;
    }
    foreach($a2 as $k=>$v){
        $a3[$k]['doc1']=array_key_exists($k, $a2) ? $a3[$k]['doc1']:0;
        $a3[$k]['doc2']=$v;
    }
    return $a3;
}

The array structure is like following

$a1 = array(
    "apple"=>4,
    "banana"=>2,
    "mango"=>10,
    "guava"=>1,
    "cherry"=>3,
    "grapes"=>7
    );
$a2 = array(
    "pista"=>77,
    "cashew"=>65,
    "almond"=>23,
    "guava"=>34,
    "cherry"=>54,
    "grapes"=>48
    );

The required result should look like this

a3 = Array(
    [apple] => Array([doc1] =>  4, [doc2] =>  0),    
    [banana] => Array([doc1] => 2, [doc2] =>  0),
    [mango] => Array([doc1] => 10, [doc2] =>  0),
    [guava] => Array([doc1] =>  1, [doc2] => 34),
    [cherry] => Array([doc1] => 3, [doc2] => 54),
    [grapes] => Array([doc1] => 7, [doc2] => 48),
    [pista] => Array([doc1] =>  0, [doc2] => 77),
    [cashew] => Array([doc1] => 0, [doc2] => 65),
    [almond] => Array([doc1] => 0, [doc2] => 23)
);
  • 写回答

3条回答 默认 最新

  • duanbiao4025 2015-06-02 10:03
    关注
    // Find all unique keys
    $keys = array_flip(array_merge(array_keys($a1), array_keys($a2)));
    
    // create new array
    foreach($keys as $k=>$v) {
      $result[$k]['doc1'] = isset($a1[$k]) ? $a1[$k] : 0;
      $result[$k]['doc2'] = isset($a2[$k]) ? $a2[$k] : 0;
      }
    
      var_dump($result);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况