Я хотел бы расширить ассоциативный массив. Исходный массив как

$arr = [[
  'ID'      => 0,
  'TEXT'    => SOME_CONST,
  'CHECKED' => $opt_flag,
]];

С новым условием я хотел бы расширить этот существующий массив.

if (defined('MODULE_STATUS') && MODULE_STATUS == 'true') {
  $arr['JSON_ATTRDATA'] = 1;
}

Результат

Array
(
    [0] => Array
        (
            [ID] => 0
            [TEXT] => text
            [CHECKED] => 1
        )

    [JSON_ATTRDATA] => 1
)

Что плохого в том, что новый ключ находится за пределами вложенного массива?

-1
user1286819 19 Окт 2017 в 09:42

3 ответа

Лучший ответ

Вы хотите $arr[0]['JSON_ATTRDATA'] = 1; прямо сейчас вы добавляете к родительскому массиву, вы хотите дочерний массив с ключом 0

1
madalinivascu 19 Окт 2017 в 06:46

Делать $arr[0]['JSON_ATTRDATA']

< Сильный > ПОДРОБНОСТИ

$arr содержит массив в массиве. Нравится

Array
(
    [0] => Array
        (
            [ID] => 0
            [TEXT] => text
            [CHECKED] => 1
        )
)

Поэтому, когда вы добавляете $arr['JSON_ATTRDATA'], это добавляет в первый массив

0
usman ikram 19 Окт 2017 в 06:47

Массив $arr уже имеет 1 объект

Изменить значение этого объекта по его индексу

$arr[0] = "anything else"

И добавить больше объектов

$arr[] = "Another object";

Вам следует позвонить:

$arr[0]['JSON_ATTRDATA'] = 1;

Добавит еще один key => value к первому объекту

0
Khodour.F 19 Окт 2017 в 06:47