PHP массив слияния - PullRequest
       0

PHP массив слияния

0 голосов
/ 20 марта 2012

У меня есть два массива следующим образом:

Массив I:

Array
(
    [0] => Array
        (
            [did] => 1
            [dname] => AJAy
            [dsp] => 3
            [dqu] => abc
            [isactive] => Y
        )
    [1] => Array
        (
            [did] => 2
            [dname] => Vijay
            [dsp] => 4
            [dqu] => abc
            [isactive] => Y
        )
)

Массив II:

Array
(
    [0] => Array
        (
            [recno] => 1
            [dname] => AJAy
            [dsp] =>
            [did]=>
            [dqu] => 
            [isactive] => Y
        )
    [1] => Array
        (
            [recno] => 2
            [dname] => Vijay
            [dsp] =>
            [did]=>
            [dqu] => 
            [isactive] => Y
        )
)

Я хочу обновить значения did, dsp,dqu из массива I в массив II, основанный на значении совпадения dname, я попытался слить массив, это не работает для моей ситуации, пожалуйста, помогите мне

Ответы [ 3 ]

0 голосов
/ 20 марта 2012

Чувак, ты можешь попробовать с помощью array_combine () ... Создает массив, используя один массив для ключей и другой для его значений.

но вы должны указать условие для соответствующих значений ..

0 голосов
/ 20 марта 2012

Как насчет:

$arr1 = Array(
    Array(
        'did'       => 1,
        'dname'     => 'AJAy',
        'dsp'       => 3,
        'dqu'       => 'abc',
        'isactive'  => 'Y',
    ),
    Array(
        'did'       => 2,
        'dname'     => 'Vijay',
        'dsp'       => 4,
        'dqu'       => 'abc',
        'isactive'  => 'Y',
    ),
);
$arr2 = Array(
    Array(
        'recno'     => 2,
        'dname'     => 'Vijay',
        'dsp'       => '',
        'did'       => '',
        'dqu'       => '',
        'isactive'  => 'Y',
    ),
    Array(
        'recno'     => 1,
        'dname'     => 'AJAy',
        'dsp'       => '',
        'did'       => '',
        'dqu'       => '',
        'isactive'  => 'Y',
    ),
);

for($i1=0; $i1<count($arr1); $i1++) {
    for ($i2=0; $i2<count($arr2); $i2++) {
        if ($arr1[$i1]['dname'] == $arr2[$i2]['dname']) {
            $arr2[$i2]['did'] = $arr1[$i1]['did'];
            $arr2[$i2]['dsp'] = $arr1[$i1]['dsp'];
            $arr2[$i2]['dqu'] = $arr1[$i1]['dqu'];
        }
    }
}
print_r($arr2);

выход:

Array
(
    [0] => Array
        (
            [recno] => 2
            [dname] => Vijay
            [dsp] => 4
            [did] => 2
            [dqu] => abc
            [isactive] => Y
        )

    [1] => Array
        (
            [recno] => 1
            [dname] => AJAy
            [dsp] => 3
            [did] => 1
            [dqu] => abc
            [isactive] => Y
        )

)
0 голосов
/ 20 марта 2012

как-то так?

<?php
$a = array
(
        0 => array
        (
                1 => 'bat'
        ),
        1 => array
        (
                10 => 'hamar'
        )
);
$b = array
(
        0 => array
        (
                2 => 'bi'
        ),
        1 => array
        (
                11 => 'hamaike'
        )
);

$length = count($a);
$tmp = array();
for($i=0;$i<$length;$i++)
{
        $tmp[$i] = array_merge($a[$i], $b[$i]);
}

print_r($tmp);
?>

edit: лучше из array_merge_recursive из комментариев:)

...