2016-08-04 3 views
0

Я работаю над массивом для проекта, и я хочу знать, как добавить пару ключевых значений в конец массива. Так вот элементы:Как добавить пару ключевых значений в конце многомерного массива?

1st array 
    $items = array(
    array('id' => '1', 'desc'=>'Canadian-Australian Dictionary', 'price'=>24.95), 
    array('id' => '2', 'desc'=>'As-new parachute (never opened)', 'price'=> 1000), 
    array('id'=>'3', 'desc'=>'Songs of the Goldfish (2CD set)', 'price'=> 19.99)); 

2nd array: 
$cart = array(
array('id' => '1','quantity'=>2) 
); 

Поэтому в основном то, что я хочу знать, как я могу добавить значения от 1-го массива 2-го массива на основе идентификатора, чтобы иметь массив, как этот.

final array i want to get: 
$itemDetail = array(
array('id' => '1', 'desc'=>'Canadian-Australian Dictionary', 'price'=>24.95, 'quantity'=> 1) 
); 

ответ

1

Вы можете сделать это просто с петлей:

$result = []; 
foreach ($cart as $attributes) { 
    foreach ($items as $item) { 
     if ($item['id'] == $attributes['id']) { 
      $result[] = $item + $attributes; 
     } 
    } 
} 

var_dump($result); 
+1

Ваше решение не отвечает требованиям. Массивы должны быть заполнены на основе id (поэтому некоторые 'if' необходимы), и, кроме того, обновленный должен быть вторым массивом, а не первым. –

+0

@von Oak благодарит за внимание. Отредактировано – mnv

+1

Хорошая командная работа ;-) –

1

работать как массив выглядеть выше в последовательности ид начинаются с 1

$items = array(
     array('id' => '1', 'desc'=>'Canadian-Australian Dictionary', 'price'=>24.95), 
     array('id' => '2', 'desc'=>'As-new parachute (never opened)', 'price'=> 1000), 
     array('id'=>'3', 'desc'=>'Songs of the Goldfish (2CD set)', 'price'=> 19.99)); 


    $cart = array(
    array('id' => '1','quantity'=>2) 
    ); 

    function my_array_merge(&$array1, &$array2) { 
     $result = Array(); 
     foreach($array1 as $key => &$value) { 
      $result[$key] = array_merge($value, $array2[$key]); 
     } 
     return $result; 
    } 
    $array = my_array_merge($items, $cart); 
    print_r($array); 
+0

Ваше решение не соответствует требованиям. Массивы должны быть заполнены на основе id (так что некоторые 'if' необходимы). В вашем случае он работает только из-за слияния первого элемента из первого массива и первого элемента из второго массива. Но если в первом элементе массива ''id' => '1'' находится в первой позиции, а во втором массиве на другом месте, чем в первом, ваш код не работает. –

+0

И все-таки это не так :-) Попытайтесь представить, у вас в '$ cart' только один массив с' 'id' => '2''. Затем этот массив объединится с массивом ''id' => '1'' из' $ items', потому что оба являются первыми в своих мультимассивах. Это нежелательное поведение. Нужно проверить, если «id» из $ cart == 'id' из $ items. –

+0

Я не получаю, если U покажу мне оба массива, я мог бы помочь –

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