php二维数组拼接问题

我有3个二维数组:
$arr1 = array(array("date"=>"2016-08-01","Name"=>"Mike","Age"=>18),
array("date"=>"2016-08-02","Name"=>"Bob","Age"=>21),
array("date"=>"2016-08-03","Name"=>"Cindy","Age"=>19));
$arr2 = array(array("date"=>"2016-08-01","Address"=>"Zhejiang"),
array("date"=>"2016-08-03","Address"=>"Shanghai"));
$arr3 = array(array("date"=>"2016-08-01","Sex"=>"Male"),
array("date"=>"2016-08-02","Sex"=>"Female"),
array("date"=>"2016-08-03","Sex"=>"Female"));
想根据date进行拼接,$arr2中缺少2016-08-02这一天的数据,所以字段传值为0,
求大神交我一下该怎么拼接
想要拼成:
Array ( [0] => Array ( [date] => 2016-08-01 [Name] => Mike [Age] => 18 [Address] => Zhejiang [Sex] => Male ) [1] => Array ( [date] => 2016-08-02 [Name] => Bob [Age] => 21 [Address] => 0 [Sex] => Female ) [2] => Array ( [date] => 2016-08-03 [Name] => Cindy [Age] => 19 [Address] => Shanghai [Sex] => Female ) )

$arr1 = array(
    array("date"=>"2016-08-01","Name"=>"Mike","Age"=>18),
    array("date"=>"2016-08-02","Name"=>"Bob","Age"=>21),
    array("date"=>"2016-08-03","Name"=>"Cindy","Age"=>19)
);

$arr2 = array(
    array("date"=>"2016-08-01","Address"=>"Zhejiang"),
    array("date"=>"2016-08-03","Address"=>"Shanghai")
);

$arr3 = array(
    array("date"=>"2016-08-01","Sex"=>"Male"),
    array("date"=>"2016-08-02","Sex"=>"Female"),
    array("date"=>"2016-08-03","Sex"=>"Female")
);

function merge($arr1,$arr2=[]) {
    foreach($arr1 as $k=>$v) {
        if(!isset($arr2[$v['date']])) {
            $arr2[$v['date']] = array(
                'date'=>$v['date'],
                'Name'=>'',
                'Address'=>'',
                'Sex'=>'',
            );
        }

        if(isset($v['Name'])) {
            $arr2[$v['date']]['Name'] = $v['Name'];
        }

        if(isset($v['Address'])) {
            $arr2[$v['date']]['Address'] = $v['Address'];
        }

        if(isset($v['Sex'])) {
            $arr2[$v['date']]['Sex'] = $v['Sex'];
        }

    }
    return $arr2;
}

$arr = merge($arr1);
$arr = merge($arr2,$arr);
$arr = merge($arr3,$arr);

print_r($arr); //合并后的 key值和你的需求不太一致

温馨提示:答案为网友推荐,仅供参考
相似回答