推送foreach后PHP数组为空

时间:2016-02-02 14:01:49

标签: php arrays foreach push is-empty

我在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

我做错了什么以及如何解决?

2 个答案:

答案 0 :(得分:2)

通过这个,您可以获得数组的副本并修改副本($pair):

foreach ($allItems as $pair) {

您需要修改以引用$pair(请注意&):

foreach ($allItems as &$pair) {

答案 1 :(得分:0)

在将项目推送到其中时,不能使用foreach()迭代数组。

尝试在foreach语句中推送到一个新变量:

array_push($ newPair,$关键字[$ i]于 - &GT;屏幕取词());