PHP 递归处理数组,并组合成新的数组 50

$arr['Shape']=array(0=>'a',1=>'a1',2=>'a2',3=>'a3');$arr['Col']=array(0=>'b',1=>'b1',... $arr['Shape'] = array(0 => 'a', 1 => 'a1', 2 => 'a2', 3 => 'a3');
$arr['Col'] = array(0 => 'b', 1 => 'b1', 2 => 'b2', 3 => 'b3', 4 => 'b4');
....

把这些数组,组合成(a,b,e,f)(a,b1,e1,f1)(a,b2,e2,f2) (a,b3,e3,f3)
,然后是a1组合(a1,b,e,f)(a1,b1,e1,f1)(a1,b2,e2,f2) (a1,b3,e3,f3)
,然后是a2,a3,下面的数组如果有多的数据,也要匹配出来如有b4的, (a,b4,e,f)(a,b4,e1,f1)(a,b4,e2,f2)
(a,b4,e3,f3),然后是a1的b4
(a1,b4,e,f)(a1,b4,e1,f1)(a1,b4,e2,f2) (a1,b4,e3,f3),这样的,希望大神帮帮忙,这里我逻辑短路,绕不过来了。
展开
 我来答
匿名用户
2015-07-13
展开全部
/**
 * 多维数组递归合并
 */
function multimerge(){
    $arrs = func_get_args();
    $merged = array();
    while($arrs){
        $array = array_shift($arrs);
        if(!$array){
            continue;
        }
        foreach ($array as $key => $value){
            if (is_string($key)){
                if (is_array($value) && array_key_exists($key, $merged) && is_array($merged[$key])){
                     $merged[$key] = call_user_func(__FUNCTION__, $merged[$key], $value);
                }else{
                     $merged[$key] = $value;
                }
            }else{
                    $merged[] = $value;
            }
        }
    }
    return $merged;
}

$a1 = array('user' => array('name' => 'tony', 'score' => 23));
$a2 = array('user' => array('name' => 'tony', 'score' => 255), 'name' =>'tom');
$a3 = array('user' => array('name' => 'tony', 'score' => 288, 'test' => 'abc'), 'name' =>'jack');
$result= multimerge($a1, $a2, $a3);
var_dump($result);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式