Вставьте новый массив в ассоциативный массив - PullRequest
0 голосов
/ 17 сентября 2018

Я попытался вставить новый массив в мой многомерный / ассоциативный массив.Но это не работает, ни array_push() не работает.Мой текущий код выглядит следующим образом:

$myJson = array(
  array (
    'id' => 1,
    'name' => 'Jane Doe', 
    'age' => 26
  ),
  array (
    'id' => 2,
    'name' => 'Josélito',
    'age' => 35
  )
);


$myAr = array(
  'id' => 5,
  'channel' => 'pimbaTv',
  'followers' => 15014
);

foreach($myJson AS $js) {
  $js['event'][] = $myAr;
  //$js['event'] = $myAr;
}

Так что я хотел бы что-то вроде этого:

  array (
    'id' => 1,
    'name' => 'Jane Doe', 
    'age' => 26,
    'event' => array(
       'id' => 5,
       'channel' => 'pimbaTv',
       'followers' => 15014
     );
  ),
  array (
    'id' => 2,
    'name' => 'Josélito',
    'age' => 35,
    'event' => array(
       'id' => 5,
       'channel' => 'pimbaTv',
       'followers' => 15014
     );
  )

Я пытаюсь все, что я могу найти, но до сих пор нет решения.

Ответы [ 4 ]

0 голосов
/ 17 сентября 2018

Функция array_push () обычно используется для добавления новых данных в массив, но должна иметь последовательный индекс: $ arr [0], $ ar [1] .. и т. Д.

Вы не можете использовать егов ассоциативном массиве напрямую.Но, обращаясь к структуре вашего массива, поскольку ваш подмассив имеет такой вид индекса, вы все равно можете использовать толчок массива, но вы должны указать индекс.Это пример:

array_push($myJson["event"], $myAr);

Надеюсь, вам будет понятнее.

0 голосов
/ 17 сентября 2018

Вы можете использовать передачу по ссылке на массив в цикле for следующим образом.Для справки PHP Передача по ссылке в foreach

foreach($myJson AS &$js) {
    $js['event'] = $myAr;
}
0 голосов
/ 17 сентября 2018

В новых версиях php вы должны использовать ссылки для редактирования его содержимого.

Вместо того, чтобы делать:

foreach($myJson AS $js) {
    $js['event'][] = $myAr;
}

Вы должны сделать:

foreach($myJson AS &$js) {
    $js['event'][] = $myAr;
}

http://php.net/manual/en/control-structures.foreach.php

"Чтобы иметь возможность напрямую изменять элементы массива в цикле, перед $ value добавьте &. В этом случае значение будет назначено по ссылке."

0 голосов
/ 17 сентября 2018

Вам необходимо получить доступ к вашему исходному массиву $myJson, используя $key из цикла, для назначения новых значений. По умолчанию $value внутри цикла foreach не передаются по ссылке.

Выполните следующие действия:

foreach($myJson AS $key => $value) {
  $myJson[$key]['event'] = $myAr;
}

Вы можете увидеть и другие ответы, используя передачу по ссылке .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...