一个变量在php中的foreach循环中不返回任何内容,但如果我在前面返回,它就有值


A variable returns nothing at foreach loop in php, but if i return before, it has value

我在php中遇到了一些脚本问题。我正试图弄清楚发生了什么,所以我找到了错误出现的地方。

 function doSomething($var){
  $sql= "SELECT * FROM products";
  $res = $mysqli->query($sql);
  $spts=array();
        for ($i = 0; $i <= $res->num_rows - 1; $i++) {
            $res->data_seek($i);
            $spts[$i] = $res->fetch_assoc();
        }
  **return $var;**
  foreach($spts as $spt){
    **return $var;**
  }

正如您在下面的代码中看到的,我添加了两个return语句。这里的错误是,当我在foreach语句之前返回$var时,它会返回我传递给函数的值,但在foreach中,它不会返回任何内容,即使我把它放在第一行。

我一直在寻找另一个问题,但没有人谈论这个具体的错误。我不知道我是不是做错了什么。为什么$var会贬值?

我打赌您的$spts是空的,因此没有执行foreach循环,因此foreach循环内的return不会返回任何内容。(PHP跳过循环,函数进入自然EOF返回。)

尝试使用return count($spts),看看是否有结果,以及foreach的至少一次迭代。(但在进入foreach之前返回,否则您将再次面临相同的问题。)

此外,您还可以在foreach后面添加一个"无结果"返回:

foreach($spts as $spt){
    return $var;
}
return "no result";