我在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
我做错了什么以及如何解决?
答案 0 :(得分:2)
通过这个,您可以获得数组的副本并修改副本($pair
):
foreach ($allItems as $pair) {
您需要修改以引用$pair
(请注意&
):
foreach ($allItems as &$pair) {
答案 1 :(得分:0)
在将项目推送到其中时,不能使用foreach()迭代数组。
尝试在foreach语句中推送到一个新变量:
array_push($ newPair,$关键字[$ i]于 - &GT;屏幕取词());