2015-05-06 27 views
0

我試圖從逗號分隔列表中獲取值,我已經使用了explode()方法,但它只適用於某些情況下,僅在其他情況下才會發出通知:注意:將列表分配給列表時未定義的偏移量

說明:未定義偏移

我的代碼:

殼體1(properlly工作):

$permission = 1,2,3,4,5 ; // this is fetching values from database 

list($p1, $p2,$p3,$p4,$p5) = explode(',', $permission); 
echo $p1. "</BR>".$p2. "</BR>".$p3. "</BR>".$p4. "</BR>".$p5 ; 

輸出:

1 2 3 4 5 

殼體2(注:未定義偏移:4和通知:未定義偏移:3):

$permission = 1,2,3 ;// this is fetching values from database 

list($p1, $p2,$p3,$p4,$p5) = explode(',', $permission); 
echo $p1. "</BR>".$p2. "</BR>".$p3. "</BR>".$p4. "</BR>".$p5 ; 

輸出:

1 2 3 with (Notice: Undefined offset: 4 and Notice: Undefined offset: 3) 

如何克服本通知。或者我的方法本身是錯誤的。

還有其他什麼好方法嗎?

+0

'list($ p1,$ p2,$ p3,$ p4,$ p5)= explode(',',$ permission。',,,,');' –

+0

@MarkBaker我認爲這是一個很糟糕的解決方案 – Rizier123

+0

當你使用多個值(比如5)時,這不是一個好的解決方案;當你玩的可能1或2,那麼它的用途 –

回答

6

這是因爲它不能保存列表中每個變量的值,因爲您的字符串只有2個逗號== 3個值。

所以解決這個簡單地把它保存在一個數組和循環陣列上,像這樣:

$arr = explode(',', $permission); 

foreach($arr as $v) 
    echo $v . "<br>"; 
+0

其幫助我很多。非常感謝你:) – Nayana

+0

@Nayana不客氣! – Rizier123

0

在第二個例子中,你只需要在數據庫 - 返回三個值而你正在嘗試設置5