Я помещаю значения в массив в цикле 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
что я делаю не так и как это исправить?
Таким образом вы получаете копию массива и модифицируете копию ($pair
):
foreach ($allItems as $pair) {
Вам нужно изменить, чтобы получить ссылку на $pair
(Обратите внимание &
):
foreach ($allItems as &$pair) {
Вы не можете перебирать массив с помощью foreach (), вставляя в него элементы.
Попробуйте нажать на новую переменную в операторе foreach:
array_push ($ newPair, $ ключевые слова [$ я] -> GetWord ());