Php 为foreach()提供的参数无效;无效参数";
为第865行的Php 为foreach()提供的参数无效;无效参数";,php,mysql,arguments,Php,Mysql,Arguments,为第865行的foreach()提供的参数无效 我将永久性地收到此错误: foreach ($prod as $key => $value) { $product[$key] = $prod[$key]; } if ($prod["visibility"] == 'true') { if($this->storage->section["template"]=='')
foreach()
提供的参数无效
我将永久性地收到此错误:
foreach ($prod as $key => $value) {
$product[$key] = $prod[$key];
}
if ($prod["visibility"] == 'true') {
if($this->storage->section["template"]=='')
$this->storage->content = template('product', $product);
else
$this->storage->content = template('product', $product);
// $this->storage->content = template('custom/'.$this->storage->section["template"], $product);
}
return;
}
您的数组
$prod
似乎是空的
在foreach之前添加一个条件,如下所示:
if (! empty($prod)) {
foreach ($prod as $key => $value) {
// Your Code
}
}
else {
// No records found
}
这将检查提供给foreach
的数组是否为空,并且仅当它有记录时才循环它
因此,它不会显示任何错误/警告
另外,请检查您的代码并检查$prod
未获取数据的原因
这是一种导致没有数据或出现错误的情况
这将与上述解决方案一起永久解决此问题。
$prod
不是数组/iterable。这是我所能提供的信息的最大帮助…如果不查看创建$prod
的代码,就不可能找出问题所在。只需在foreach之前打印r($prod),然后检查您得到了什么?您能显示var\u dump($prod)吗代码>似乎它不是一个数组。我刚才在那里看到一个return
。由于您没有发布代码的其余部分,可能是您没有向函数传递有效的$prod
,或者根本没有传递它……请注意:如果存在prod
,这可能被视为黑客行为。我想说的是,op还应该查找空的$prod
^背后的原因。编辑:检查is_array
或类似的东西会更好地防止这种类型的错误(因为如果$prod
是5
,例如,它仍然是!空的
-但对于foreach
)第一个,您的建议将添加到我的答案中。谢谢您指出。对不起,我刚刚注意到这个xD:您的数组$prod
似乎是空的。事实并非如此<代码>$foo=array()
是一个空数组,它是foreach
的有效参数-它只是不会输入foreach
,但仍然不会抛出该错误。这导致这个答案有点不正确。正如我在另一条评论中提到的:例如,如果$prod
是5
,它仍然是!空的
-但对foreach无效
谢谢大家的快速回复我编辑并更改了它,就像(!empty($prod)){foreach($prod as$key=>$value){$product[$key]=$prod[$key];}}我会检查错误