1

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;**
  }

以下のコードでわかるように、2 つの return ステートメントを追加しました。ここでの間違いは、foreach ステートメントの前に $var を返すと、関数に渡した値が返されますが、foreach では、最初の行に置いても何も返されないことです。

別の質問で探していましたが、この特定のエラーについて誰も話していません。私が何か間違ったことをしているかどうかはわかりません。$var の値が失われるのはなぜですか?

4

1 に答える 1

0

あなた$sptsは空だと思います。したがって、foreach ループは実行されません。したがって、foreach ループの return からは何も返されません。(PHP はループをスキップし、関数は自然な EOF-Return になります。)

return count($spts)結果があるかどうか、および foreach の少なくとも 1 回の反復があるかどうかを確認するために試してみてください。(ただし、foreach に入るにそれを返すか、同じ問題に再び直面しています。)

また、foreach の後に「結果なし」のリターンを追加することもできます。

foreach($spts as $spt){
    return $var;
}
return "no result";
于 2013-07-23T08:40:01.033 に答える