OK、「未定義」変数の問題の多くを検索して読みましたが、問題の解決策が見つかりません。私は PHP を初めて使用するので、ここで伝えようとしていることが明確であることを願っています。. .
選択ドロップダウンリストのあるフォームがあります。ユーザーが選択した内容に基づいて、php スクリプトは PDO を使用して mySql データベースからレコードを取得し、FetchAll 出力をセッション変数に割り当ててから、初期フォームに戻ります。
フォームでは、変数 $scores をセッション変数に設定します。フォーム内では、foreach ループを使用して結果をループ処理し、HTML をエコー出力します。うまく機能しますが、ブラウザーからソースを表示すると、次の通知が表示されます (ただし、ページには表示されません)。
Notice: Undefined variable: scores in C:\inetpub\wwwroot\content\viewScores.php on line 187
動作すると言ったので、これは私のページには実際には影響しませんが、なぜメッセージが表示されるのか知りたいだけです。
これが私のコードのスニペットです。. .
<?php $scores = $_SESSION['scores'];?>
<html>
.
.
.
<?php
foreach ($scores as $row) {
echo '<td>' . $row['date'] . '</td>';
.
.
.
}
?>
</html>
foreach ループは、メッセージの発信元です。変数は PDO fetchAll 出力配列の内容に設定され、ループは機能しますが、なぜメッセージが表示されるのでしょうか? ループの前に vardump を配置すると、$scores 配列が正常にダンプされます。
((array)$scores as $row)
このボードで(配列)ソリューションが見つかるまで、このエラーメッセージ「無効な引数が foreach() に指定されました」を回避するために、最初の選択ドロップダウンでそれを行う必要があったため、foreach の使用に疲れました。 (ありがとう!)。とにかく foreach は最初の引数として配列を期待しているので、なぜそれをしなければならないのかまだわかりませんか? たぶん、それは配列の配列(またはあなたがそれを呼ぶもの)だからです。とにかく (array) を使用しても、未定義変数エラーは解決しませんでした。
何か案は?
編集:これまでの迅速な対応に感謝します。申し訳ありませんが、私の質問が完全に明確ではない可能性があります。私が含めたコード スニペットには、$scores が設定されるすべての PHP コードが含まれているわけではありませんif (isset($_SESSION['scores']))
。$_SESSION['scores'] が設定されていることを確認するために使用します。
本当に奇妙なことに気づきました。これは IE 8 では発生せず、Google Chrome でのみ発生します。しかし、PHP はサーバー側のスクリプトだと思っていたのに、なぜ Google Chrome でしかこのメッセージが表示されないのでしょうか?