PHP массив пустой после нажатия в foreach

Я помещаю значения в массив в цикле foreach, и кажется, что значения добавляются в массив, так что проблема не в условии отправки. Однако, когда я снова прохожу этот массив, он пуст.

Может кто-нибудь объяснить мне, почему этот код

foreach ($allItems as $pair) {
for ($i = 0; $i < count($keywords); $i++) {
if ($this->itemInArray($pair["item"], $items2D[$i])) {
array_push($pair["keywords"], $keywords[$i]->getWord());
}
}
$this->log("Keywords count inside loop: ".count($pair["keywords"]));
}

foreach ($allItems as $pair) {
$this->log("Keywords count outside loop: ".count($pair["keywords"]));
}

Выводы это:

Keywords count inside loop: 3
Keywords count inside loop: 1
Keywords count inside loop: 1
Keywords count inside loop: 1
Keywords count outside loop: 0
Keywords count outside loop: 0
Keywords count outside loop: 0
Keywords count outside loop: 0

что я делаю не так и как это исправить?

1

Решение

Таким образом вы получаете копию массива и модифицируете копию ($pair):

foreach ($allItems as $pair) {

Вам нужно изменить, чтобы получить ссылку на $pair (Обратите внимание &):

foreach ($allItems as &$pair) {
2

Другие решения

Вы не можете перебирать массив с помощью foreach (), вставляя в него элементы.

Попробуйте нажать на новую переменную в операторе foreach:

array_push ($ newPair, $ ключевые слова [$ я] -> GetWord ());

0

По вопросам рекламы [email protected]