好的,我搜索並閱讀了許多「未定義」的變量問題,並找不到解決我的問題。我是PHP的新手,所以我希望我在這裏傳達的內容很明確。 。 。PHP - 爲什麼我的變量仍未定義?
我有一個選擇下拉列表的形式。根據用戶選擇的內容,我的php腳本使用PDO從mySql數據庫檢索記錄,並將FetchAll輸出分配給Session變量,然後返回到初始表單。
在表單中,我爲變量設置了一個變量$分數。在表單中,我使用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數組。
我已經厭倦了使用foreach ((array)$scores as $row)
,因爲我必須在初始選擇下拉菜單中執行該操作,以避免出現此錯誤消息「爲foreach()提供的無效參數」,這令人困惑,直到找到(array )解決方案(謝謝!)。我仍然不明白爲什麼我必須這樣做,因爲無論如何,foreach需要一個數組作爲第一個參數?也許是因爲它是一個數組的數組(或任何你所說的)。無論如何使用(數組)沒有解決未定義的變量錯誤。
任何想法?
編輯:感謝迄今爲止的快速反應。對不起,我從答案中看到,也許我的問題並不完全清楚。我包含的代碼段不包括我的所有PHP代碼,其中$分數被設置 - 我使用if (isset($_SESSION['scores']))
來驗證是否設置了$ _SESSION ['scores']。
我剛注意到一些非常奇怪的東西。這在IE 8中不會發生,它只發生在Google Chrome中。但我認爲PHP是SERVER方腳本,所以爲什麼我只能在Google Chrome中收到這條消息?
如果將一個未定義的變量轉換爲'array',則會得到一個空數組。如果你不這樣做,你仍然有'NULL',PHP中每個未定義變量的值。 'foreach'不適用於'NULL',但它適用於一個空數組。 – hakre
@hakra如果變量被定義爲空,那麼不會生成通知 –
它不是NULL或EMPTY - 循環如何工作,如果它是NULL或EMPTY,將我的代碼寫出來?我確實聲明我在foreach循環之前做了一個var_dump,它包含了數據。 – azrickster