2016-05-20 3 views
1

Я не знаю, как добавить ключ и значение в существующий массив. Мой массив выглядит следующим образом. Сначала я попытался добавить с помощью array_push(), но он добавил не так, как мне было нужно.PHP-массивы: как добавить «ключ и значение» в существующий массив

Я дал свой результат после того, как дал «var_dump».

array (size=6) 
    0 => 
    array (size=3) 
    'id' => int 7 
     'title' => string 'Pongal' (length=6) 
     'start' => string '2016-05-16' (length=10) 
    1 => 
    array (size=3) 
     'id' => int 8 
     'title' => string 'big day' (length=7) 
     'start' => string '2016-05-04' (length=10) 
    2 => 
    array (size=3) 
     'id' => int 9 
     'title' => string 'marriage day' (length=12) 
     'start' => string '2016-05-19' (length=10) 
    3 => 
    array (size=3) 
     'id' => int 10 
     'title' => string 'Karthiks bday' (length=14) 
     'start' => string '2016-06-11' (length=10) 
    4 => 
    array (size=3) 
     'id' => int 12 
    'title' => string 'Election date announced' (length=23) 
     'start' => string '2016-06-01' (length=10) 

Теперь я хотел бы, чтобы вставить массив ('sample_key' => 'sample_value') после того, как все элементы каждого массива.

Как я могу это сделать? Это я хочу, чтобы результат как это: -

array (size=6) 
    0 => 
    array (size=3) 
     'id' => int 7 
     'title' => string 'Pongal' (length=6) 
     'start' => string '2016-05-16' (length=10) 
     ‘color’ => ‘red’ 
    1 => 
    array (size=3) 
     'id' => int 8 
     'title' => string 'big day' (length=7) 
     'start' => string '2016-05-04' (length=10) 
     ‘color’ => ‘red’ 
    2 => 
    array (size=3) 
     'id' => int 9 
     'title' => string 'marriage day' (length=12) 
     'start' => string '2016-05-19' (length=10) 
     ‘color’ => ‘red’ 
    3 => 
    array (size=3) 
     'id' => int 10 
     'title' => string 'Karthiks bday' (length=14) 
     'start' => string '2016-06-11' (length=10) 
     ‘color’ => ‘red’ 
    4 => 
    array (size=3) 
     'id' => int 12 
     'title' => string 'Election date announced' (length=23) 
     'start' => string '2016-06-01' (length=10) 
     ‘color’ => ‘red’ 

Обратите внимание, что я добавил «цвет» => «красный» для всех индексов

+0

'$ existingArray = []; $ existingArray ['mynewkey'] = 'mynewvalue'; '? –

+0

с помощью 'foreach' и просто выполните:' $ value [$ key] = $ new_val' –

+0

@Frayne, Можете ли вы показать пример с платой «foreach» .. – Keynes

ответ

6

Просто сделать это: Working demo

с помощью & вы можете изменить основной массив и просто использовать $val['color'] = 'red', чтобы добавить новый ключ, пара значений в массиве.

foreach($arr as $key => &$val){ 
    $val['color'] = 'red'; 
} 

Обратите внимание, что «обратной записи» особенность амперсандом сохраняется даже после того, как цикл завершен: сброс $val на новое значение будет меняться последний элемент в $val, который часто является неожиданным. Существует три способа устранения этого класса ошибок:

  • Избегайте обратной записи и просто используйте выражение полного массива для записи значений внутри цикла;
  • Не используйте повторно переменную $val в том же объеме, даже для другого цикла foreach();
  • Используйте unset() на переменной $val, чтобы отключить ее от массива, на который он будет писать.
+1

Да, я понял. Спасибо, сверстник, вы спасли мой день – Keynes

+0

Просто имейте в виду, что после цикла установка '$ val' снова изменит последний элемент в' $ arr' - так что следите! – halfer

+0

@halfer, Так есть ли способы уволить это? Я думаю 'unset ($ val);' –

1
foreach($arr as $key => $row){ 
    $arr[$key]['color']="red"; 
} 
+0

или вы можете использовать пример из @ frayne-konok, но вам не нужно '$ key =>', просто напишите 'foreach ($ arr as & $ val)' – newbie67

+0

да, кто помог мне, но можете ли вы объяснить мне зачем нужна '& $'? – Keynes

+1

Я могу попробовать, но извините за мой английский. Когда вы используете 'foreach ($ array as $ key => $ value)', у вас есть новая переменная $ value everytime, которая ** равна ** '$ array [$ key]'. Но когда вы используете '& $', '$ value' ** не равные ** для' $ array [$ key] ', это ** то же самое ** – newbie67

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