2012-10-31 4 views
0
<?php 

$one = array(11 => 'a', 12 => 'b', 13 => 'c'); 
$two = array(14 => 'd', 15 => 'e'); 

print_r(array_merge($one, $two)); 

заносить меня:array_merge с индексами

Array 
(
    [0] => a 
    [1] => b 
    [2] => c 
    [3] => d 
    [4] => e 
) 

я хотел бы получить:

Array 
(
    [11] => a 
    [12] => b 
    [13] => c 
    [14] => d 
    [15] => e 
) 

Как я могу объединить два массива с индексами? Это возможно? Если да, то как?

+3

попробовать '$ обр = $ один + $ два,' – air4x

+0

возможно дубликат [PHP: объединить два массива, сохраняя при этом ключи вместо переиндексации?] (http://stackoverflow.com/questions/3292044/php-merge-two-arrays-while-keeping-keys-instead-of-reindexing) – Gromer

ответ

-1

Это является возможным решением.

$one = array(11 => 'a', 12 => 'b', 13 => 'c'); 
$two = array(14 => 'd', 15 => 'e'); 

function array_merge_values() 
{ 
    $args = func_get_args(); 

    $result = $args[0]; 
    for ($_ = 1; $_ < count($args); $_++) 
    foreach ($args[$_] as $key => $value) 
    { 
     if (array_key_exists($key,$result)) 
     $result[$key] += $value; 
     else 
     $result[$key] = $value; 
    } 
    return $result; 
} 

var_dump(array_merge_values($one,$two)); 

Выход

array (size=5) 
    11 => string 'a' (length=1) 
    12 => string 'b' (length=1) 
    13 => string 'c' (length=1) 
    14 => string 'd' (length=1) 
    15 => string 'e' (length=1) 

Использование print_r

Array 
(
[11] => a 
[12] => b 
[13] => c 
[14] => d 
[15] => e 
) 
5

Массивы с цифровыми ключами будут отброшены их ключами array_merge. Вместо этого используйте оператор + вместо array_merge:

print_r $one + $two; 

Это дает:

Array 
(
    [11] => a 
    [12] => b 
    [13] => c 
    [14] => d 
    [15] => e 
) 

В качестве альтернативы, используйте строковые ключи вместо цифровых клавиш.

2

Вы пробовали?

$three = $one + $two;

Это должно сохранить ключи

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