2010-08-18 3 views
0

У меня есть 2 массивы Как объединить массив ключей с соответствующими значениями из другого массива?

Array ([1] => Manufacturer [2] => Location [3] => Hours [4] => Model) 

и

Array ([Manufacturer] => John Deere [Location] => NSW [Hours] => 6320) 

мне нужно объединить их и связать значения из первого массива (Производитель, местоположение, часы, модели) в качестве имен во втором массиве, и если определенные значения из первого массива не находят ассоциативного имени во втором массиве для связывания пустого. Для примера результат, что мне нужно от указанных массивов является массив как этот

Array ([Manufacturer] => John Deere [Location] => NSW [Hours] => 6320 [Model] =>) 

Если я использую простой array_combine он говорит, что PHP Warning: array_combine() [function.array-скомбинировать]: Оба параметра должны иметь одинаковое число элементов

+0

См. Также http://stackoverflow.com/questions/3503066 – Gumbo

+0

Вам не пришлось бы использовать array_combine() с решением, которое было опубликовано в вашем предыдущем вопросе: http://stackoverflow.com/questions/3514640/ PHP-ассоциативный-массивы-регулярное выражение-массив/3514692 # 3514692 – palswim

ответ

0

Допуская $ array1 и $ array2 того, как вы перечислили их, я думаю, что это будет работать:

$newArray = array(); 
while (list(,$data) = each($array1)) { 
    if (isset($array2[$data])) { 
    $newArray[$data] = $array2[$data]; 
    } else { 
    $newArray[$data] = ""; 
    } 
} 
3

вы можете использовать Simp ле foreach петля:

$combined = array(); 
foreach ($keys as $key) { 
    $combined[$key] = isset($values[$key]) ? $values[$key] : null; 
} 

Где $keys ваш первый массив с ключами и $values ваш второй массив с соответствующими значениями. Если в $values нет соответствующего значения, значение будет null.

0

Пробег: array_merge(). Этот пример, как представляется, сделать то, что вы хотите:

<?php 
$keys = array(1 => "Manufacturer", 2 => "Location", 3 => "Hours", 4 => "Model") ; 
$canonical = array_combine(array_values($keys), array_fill(0, count($keys), null)); 

$data = array("Manufacturer" => "John Deere", "Location" => "NSW", "Hours" => 6320); 

print_r(array_merge($canonical, $data)); 
0

Если массив ключей $ array1, и ассоциативный массив со значениями составляет $ array2:

$new_array = array_merge(array_fill_keys(array_flip($array1), ''), $array2)); 

Это переворачивает ваш ключ массива, заполняя его с '' значениями. Затем, когда вы объединяете массивы, любые повторяющиеся ключи будут перезаписаны вторым массивом, но незаполненные ключи останутся.

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