开发者

append one multidimensional array to another multidimensional array on same key

开发者 https://www.devze.com 2023-03-25 20:59 出处:网络
i have two array $input = Array ( [0] => Array ( [section] => 725 [location] => New Building - 26 [rows] => DDD

i have two array

$input = Array
(
    [0] => Array
        (
            [section] => 725
            [location] => New Building - 26
            [rows] => DDD
            [seats] => DDD
        )

    [1] => Array
        (
            [section] => 721
            [locat开发者_Python百科ion] => Helipad - II
            [rows] => R1,R2
            [seats] => S1,S2
        )

    [2] => Array
        (
            [section] => 724
            [location] => NDTV Times
            [rows] => R1,R2,R3
            [seats] => S1,S2,S3
        )
);

Below is second array

$extra = Array
(
    [0] => dry||Obstacles Present||yes
    [1] => wet||Not Find||no
    [2] => icy||||yes
    [3] => 
)

and i need Desired array below :

$output =Array
(
    [0] => Array
        (
            [section] => 725
            [location] => New Building - 26
            [rows] => DDD
            [seats] => DDD
            [conditions] => dry
            [obstacles] => Obstacles Present
            [normal_lighting] => yes
        )

    [1] => Array
        (
            [section] => 721
            [location] => Helipad - II
            [rows] => R1,R2
            [seats] => S1,S2
            [conditions] => wet
            [obstacles] => Not Find
            [normal_lighting] => no
        )

    [2] => Array
        (
            [section] => 724
            [location] => NDTV Times
            [rows] => R1,R2,R3
            [seats] => S1,S2,S3
            [conditions] => icy
            [obstacles] => 
            [normal_lighting] => yes
        )
)

i did following sequence to get the desired array:

foreach($extra as $efk=>$efv)
{
    if(!empty($efv)) {
        $arr_field_value[] = explode("||", $efv);
    }
}
$arr_key = array('conditions','obstacles','normal_lighting');
foreach($arr_field_value as $fv)
{
    $arr_extra_field[]=array_combine($arr_key,$fv);
}

foreach($input as $k=>$v)
{   
    $output[]=array_merge($v,$arr_extra_field[$k]);
}
echo "<pre>"; print_r($output);

I know this is really a lengthy way,Please suggest me any Smart way to do so.

You can see the WORKING DEMO

Thanks.


foreach($extra as $key => $val){
    if($val !== ''){
        list($conditions, $obstacles, $normal_lighting) = explode('||', $val);
        $input[$key]['conditions'] = $conditions;
        $input[$key]['obstacles'] = $obstacles;
        $input[$key]['normal_lighting'] = $normal_lighting;
    }
}


I think you are looking for array_merge_recursive()

foreach ($extra as $key => &$extra_elem) {
    if (!$extra_elem) {
        unset($extra[$key]);
        continue;
    }
    $extra_elem = array_combine(array(
        'conditions',
        'obstacles',
        'normal_lighting',
    ), explode('||', $extra_elem));
}
$desired = array_merge_recursive($input, $extra);
0

精彩评论

暂无评论...
验证码 换一张
取 消