2016-06-14 4 views
0

Наличие двух массивов необходимо объединить два массива с соответствующими ключами, а отдых должен быть пустым. Я попробовал array_merge, array_diff, array_fill, но ничего не помог iam bit newbie, спасибо заранее.Слияние PHP Array с соответствующими ключами

Массив один

Array 
    (
     [5] => PHM 
     [4] => ODM 
     [3] => N 
     [6] => M9 
     [10] => RDM9 
    ) 

массив 2

Array 
    (
    [0] => 01 
    [1] => 02 
    [2] => 03 
    [3] => 04 
    [4] => 05 
    [5] => 06 
    [6] => 07 
    [7] => 08 
    [8] => 09 
    [9] => 10 
    [10] => 11 
    [11] => 12 
    [12] => 13 
    ) 

Окончательный выход

Array 
    (
    [0] => null 
    [1] => null 
    [2] => null 
    [3] => N 
    [4] => ODM 
    [5] => PHM 
    [6] => M9 
    [7] => null 
    [8] => null 
    [9] => null 
    [10] => RDM9 
    [11] => null 
    [12] => null 
    ) 
+1

Какого выход при использовании 'array_merge'? –

+0

Да, бесполезно рассказывать читателям, что вы пробовали, не говоря им, почему эти вещи не работают. –

+0

Почему вы хотите «нуль» для других значений массива? – jszobody

ответ

5

Сделать массив со всеми нулями со 2-го массива и заменить значениями от 1-го массива

$arr2 = array_fill_keys(array_flip($arr2), null); 
$new = array_replace($arr2, $arr1); 
print_r($new); 
+0

приятно, что сработало спасибо сэр. – Crysis

+0

Рад, что может помочь. – splash58

+0

Я боюсь, что есть одна проблема, что, если у нас есть ключ «20» в первом массиве, но не второй? он появится в финальном массиве как заполненный – ConstantineUA

1

Вы можете передать массив 2 в петлю Еогеаспа и использовать, если/другие Постулаты, чтобы проверить, если ключ массива 2 существует в массиве 1, если так установить значение элемента $output[$key] к NULL, иначе присвоить значение как $arr1[key]

foreach ($arr2 as $key=> $value){ 
     $output[$key]=(!array_key_exists($key, $arr1)) ? NULL : $arr1[$key]; 
    } 
    var_dump($output); 
+0

кто-нибудь может объяснить, для чего был downvote? в то время как это может быть не самое быстрое решение, оно выполняет требование, нет? – SML

+1

Это не мой downvote, но думаю, что из-за 'global $ arr1;' – splash58

+0

foreach не меняет область переменной в отличие от функции. – splash58

Смежные вопросы