2012-07-13 153 views
0
if ((!in_array("9", $settingid)) || ($username1 == $username2) && ($username_viewed_by_other2 != "-view-by-other-people")) { //start function } 

現在會顯示警告消息,因爲$ username1尚未設置。php警告消息未定義變量

我不能使用if(isset($username1)){ //start function }因爲函數需要進行時,沒有設置$ USERNAME1,如何解決這個矛盾的情況呢?

+2

嗯...定義它。 – 2012-07-13 19:24:22

+1

所以你不能使用isset,因爲函數在'$ username1'沒有設置時運行?爲什麼你還將它與'$ username2'比較,在這種情況下? – andrewsi 2012-07-13 19:25:07

+0

@andrewsi你點出來,但'!in_array(「9」,$ settingid)'和'$ username_viewed_by_other2!=「 - 視圖 - 通過 - 其他 - people'仍需執行時$ USERNAME1未設置反正我是從newfurniturey的回答已經解決。不管怎樣,謝謝您。有一個好的一天。 – zac1987 2012-07-13 20:42:37

回答

1

有很多事情可以做這裏在這種情況下。

最簡單的一個是定義的變量,如果它尚未設置:

if (!isset($username1)) $username1 = ''; 
if ((!in_array("9", $settingid)) || ($username1 == $username2) && ($username_viewed_by_other2 != "-view-by-other-people")) { 
//start function 
} 

另一種可能是,以驗證使用它之前:

if ((!in_array("9", $settingid)) || (isset($username1) && ($username1 == $username2)) && ($username_viewed_by_other2 != "-view-by-other-people")) { 
//start function 
} 

如果沒有聲明的變量是需要完成的事情(我非常懷疑並建議不要這樣做),您可以通過以下方式在PHP中關閉這些通知:

error_reporting(E_ALL^E_NOTICE); 

這仍然會顯示所有其他錯誤,但會隱藏「未定義變量」等通知。

+0

我看!!我想換行內的另一個if語句if語句:'如果(isset($用戶名1){如果((in_array(「9」 ,$ settingid))||($ username1 == $ username2)){///}}'這會導致衝突,你的第二代碼解決了衝突!你很聰明!非常感謝。我很愚蠢,這樣一個簡單的解決方案也永遠不會出現在我的腦海裏。LOL – zac1987 2012-07-13 20:36:02

+0

沒問題;練習使得完美(或者,pr以多種方式解決問題= P)! – newfurniturey 2012-07-16 02:43:10

0

嘗試將@添加到變量或使用empty函數代替isset

+0

,因爲如果我不能分配值$ USERNAME1(isset($ USERNAME1)){//啓動其它功能}用於其它功能。如果我給你,價值$ USERNAME1,那麼其他的功能不能再進行 – zac1987 2012-07-13 19:28:02

0

只需使用不操作

if(!isset($username1)) { /*do function*/ } 

這個if語句基本要求,如果變量沒有設置。