2013-11-27 52 views
-1

我有這個PHP腳本:檢查字段功能PHP存在於

for ($desc=1; $_POST['ddata'.$desc]; $desc++) { 
    if($_POST['ddata'.$desc]){ 
     if ($desc == 1){ 
      $ddata = $_POST['ddata'.$desc]; 
      $dlocatie = $_POST['dlocatie'.$desc]; 
     } else { 
      $ddata = $ddata.'/'.$_POST['ddata'.$desc]; 
      $dlocatie = $dlocatie.'/'.$_POST['dlocatie'.$desc]; 
     } 
    } 
} 

如果我有5個ddata領域,它給這個錯誤:Undefined index: ddata6

我如何檢查是否該字段的存在使得我可以防止這個錯誤?

+0

是'$ desc' 0 - 4或1 - 5? – DevlshOne

回答

2

How can I check if that fields exists so I can prevent this error?

使用isset()檢查項目是否存在之前訪問它。

+1

謝謝!我會接受你的回答。 – Rawrrr1337

0

你可以去

if(isset($_POST['thekey'])) 

以上的傳統:代替if($_POST['ddata'.$desc])

if(array_key_exists('thekey', $_POST)) 
1

,你可以這樣做:

if(isset($_POST['ddata'.$desc])) 

或者:

if(array_key_exists('ddata'.$desc, $_POST)) 
0

嘗試

isset($_POST['ddata'.$desc]) 

感謝

0

檢查存在哪些領域之前,你做你的循環,通過使用preg_grep掃描您的ddata...領域的數組。

$ddata_fields = preg_grep('/^ddata\d+$/', array_keys($_POST)); 
foreach($ddata_fields as $field) { 
    $ddata = $_POST[$field]; 
    etc... 
} 
0

只需添加的if(isset($_POST['ddata'.$desc])){}代替if($_POST['ddata'.$desc]){}

0

變更部分開頭...

if($_POST['ddata'.$desc]){ 

爲了....

for ($desc=1; $_POST['ddata'.$desc]; $desc++) { 
    if (isset($_POST['ddata'.$desc])) { 
     $ddata = $_POST['ddata'.$desc']; 
    } else { 
     continue; 
    } 
    switch($desc) { 
    case "1" : 
     $ddata = $_POST['ddata'.$desc]; 
     $dlocatie = $_POST['dlocatie'.$desc]; 
    break; 
    case "2" : 
    case "3" : 
    case "4" : 
    case "5" : 
     $ddata = $ddata.'/'.$_POST['ddata'.$desc]; 
     $dlocatie = $dlocatie.'/'.$_POST['dlocatie'.$desc]; 
    break; 
    } 
}