亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用PHP“注意:未定義的變量”,“注意:未定義的索引”和“通知:未定義的偏移量”

使用PHP“注意:未定義的變量”,“注意:未定義的索引”和“通知:未定義的偏移量”

慕慕森 2019-05-20 13:52:01
我正在運行PHP腳本,并繼續收到如下錯誤:注意:未定義的變量:第10行的C:\ wamp \ www \ mypath \ index.php中的my_variable_name注意:第11行的未定義索引:my_index C:\ wamp \ www \ mypath \ index.php第10行和第11行看起來像這樣:echo "My variable value is: " . $my_variable_name;echo "My index value is: " . $my_array["my_index"];這些錯誤消息的含義是什么?他們為什么突然出現?我曾經使用這個腳本多年,我從來沒有遇到任何問題。我該如何解決?這是一個一般參考問題,供人們鏈接到重復,而不是一遍又一遍地解釋這個問題。我認為這是必要的,因為關于這個問題的大多數現實世界的答案都非常具體。相關元討論:關于重復性問題可以做些什么?“參考問題”有意義嗎?
查看完整描述

9 回答

?
楊__羊羊

TA貢獻1943條經驗 獲得超7個贊

一般是因為“糟糕的編程”,現在或以后都有可能出錯。

  1. 如果這是一個錯誤,請首先對變量進行適當的賦值:$ varname = 0;

  2. 如果它確實只是有時定義if (isset($varname)),請在使用之前測試它:

  3. 如果是因為拼錯了,那就糾正錯誤

  4. 甚至可能在PHP設置中轉動警告


查看完整回答
反對 回復 2019-05-20
?
拉丁的傳說

TA貢獻1789條經驗 獲得超8個贊

這意味著您正在測試,評估或打印尚未分配任何內容的變量。這意味著您要么輸入錯誤,要么需要先檢查變量是否已初始化為某些內容。檢查您的邏輯路徑,它可以設置在一個路徑中,但不能設置在另一個路徑中。


查看完整回答
反對 回復 2019-05-20
?
ABOUTYOU

TA貢獻1812條經驗 獲得超5個贊

我不想禁用通知,因為它有用,但是想避免太多打字。

我的解決方案是這個功能:

function ifexists($varname){
  return(isset($$varname)?$varname:null);}

所以,如果我想引用$ name和echo if exists,我只需寫:

<?=ifexists('name')?>

對于數組元素:

function ifexistsidx($var,$index){
  return(isset($var[$index])?$var[$index]:null);}

在頁面中如果我想引用$ _REQUEST ['name']:

<?=ifexistsidx($_REQUEST,'name')?>


查看完整回答
反對 回復 2019-05-20
?
手掌心

TA貢獻1942條經驗 獲得超3個贊

這是因為沒有定義變量'$ user_location'。如果您正在使用任何if循環來聲明'$ user_location'變量,那么您還必須有一個else循環并定義相同的循環。例如:

$a=10;if($a==5) { $user_location='Paris';} else { }echo $user_location;

上面的代碼將創建錯誤,因為if循環不滿足,并且在else循環中'$ user_location'未定義。仍然要求PHP回應變量。因此,要修改代碼,您必須執行以下操作:

$a=10;if($a==5) { $user_location='Paris';} else { $user_location='SOMETHING OR BLANK'; }echo $user_location;


查看完整回答
反對 回復 2019-05-20
?
青春有我

TA貢獻1784條經驗 獲得超8個贊

回答“”他們為什么突然出現?我以前使用這個腳本多年,我從來沒有遇到任何問題?!?/strong>

大多數網站在“顯示所有錯誤,但不是'通知'和'已棄用'”的“默認”錯誤報告下運行是很常見的。這將在php.ini中設置并應用于服務器上的所有站點。這意味著示例中使用的那些“通知”將被抑制(隱藏),而其他錯誤(被認為更為關鍵)將被顯示/記錄。

另一個關鍵設置是可以隱藏錯誤(即display_errors設置為“off”或“syslog”)。

在這種情況下會發生的事情是,error_reporting更改為顯示通知(根據示例)和/或設置已更改為display_errors屏幕(而不是抑制它們/記錄它們)。

為什么他們改變了?

顯而易見/最簡單的答案是,有人在php.ini中調整了這些設置中的任何一個,或者PHP的升級版現在使用了之前的不同php.ini。這是第一個看的地方。

但是,也可以覆蓋這些設置

  • .htconf(網絡服務器配置,包括虛擬主機和子配置)*

  • 的.htaccess

  • 在PHP代碼本身

其中任何一個也可以改變。

還有一個額外的復雜性,即Web服務器配置可以啟用/禁用.htaccess指令,因此如果.htaccess中的指令突然啟動/停止工作,那么您需要檢查它。

(.htconf / .htaccess假設您正在以apache身份運行。如果運行命令行,則不適用;如果運行IIS或其他Web服務器,則需要相應地檢查這些配置)

摘要

  • php.ini中的檢查error_reportingdisplay_errorsphp指令沒有改變,或者你之前沒有使用不同的php.ini。

  • .htconf(或vhosts等)中的檢查error_reportingdisplay_errorsphp指令沒有改變

  • .htaccess中的檢查error_reportingdisplay_errorsphp指令沒有改變

  • 如果.htaccess中有指令,請檢查.htconf文件中是否仍允許它們

  • 最后檢查你的代碼; 可能是一個無關的圖書館; 看是否error_reportingdisplay_errorsPHP指令已經被設置在那里。


查看完整回答
反對 回復 2019-05-20
  • 9 回答
  • 0 關注
  • 3378 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號