Добавить значение в новую коллекцию - PullRequest
0 голосов
/ 08 мая 2018

Я создал новый collection, когда я пытаюсь добавить новые значения с помощью ключа в цикле foreach, который не работает. Добавляет только 1-е значение. Я хочу, чтобы он добавил все.

Вот мой код:

$new = new Collection();

foreach($messages as $message){
 $new['message'] = $message->message;
}

Но в итоге вместо возврата всех сообщений возвращается только 1-е сообщение:

{"message":"first"}

Вместо этого он должен был вернуть

{"message": "first", "message": "second"}

В чем проблема?

Также, когда я делаю это, не давая ключ к коллекции, он возвращает все:

foreach($messages as $message){
     $new = $message->message;
}

Ответы [ 3 ]

0 голосов
/ 08 мая 2018

У вас есть массив с тем же ключом, поэтому цикл for переопределяет одно и то же значение снова и снова.

Если вам нужна коллекция, содержащая объекты с одинаковым ключом, вы можете изменить следующий код по своему усмотрению:

$new = array();
foreach ([1, 2, 3] as $i) {
  $new[] = array('message' => $i);
}
$collection = collect($new);
0 голосов
/ 08 мая 2018

проверить этот код:

$messages=['ali','reza','sara'];
$new = new Collection();
foreach($messages as $key=>$message){
    $new->prepend($message,$key);
}

dd($new);

вывод:

Collection {#475 ▼
#items: array:3 [▼
2 => "sara"
1 => "reza"
0 => "ali"
]
}
0 голосов
/ 08 мая 2018

Вы создаете коллекцию с 1 ключом, а именно "message", а затем продолжаете перезаписывать этот ключ на время вашего цикла. Таким образом, PHP обрабатывает это, как показано в вашем вопросе: коллекция с 1 ключом и 1 значением.

В этом есть смысл (например, сколько домов на вашем домашнем адресе? Только одно право? Что будет с вашей почтой, если бы было 16 домов с одинаковым адресом?).

То, что вы хотите, просто невозможно: как PHP должен знать, что он должен возвращать, когда вы запрашиваете значение в "message", если вся структура данных будет состоять из одного и того же ключа?

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