Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为foreach()提供的参数无效;无效参数";_Php_Mysql_Arguments - Fatal编程技术网

Php 为foreach()提供的参数无效;无效参数";

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"]=='')

为第865行的
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];}}我会检查错误