2013-11-27 53 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; 
    } 
}