检查函数PHP中是否存在字段

时间:2013-11-27 14:27:15

标签: 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

如何检查该字段是否存在以便我可以防止此错误?

7 个答案:

答案 0 :(得分:2)

  

如何检查这些字段是否存在以便我可以阻止此错误?

使用isset()在访问之前检查项目是否存在。

答案 1 :(得分:1)

而不是if($_POST['ddata'.$desc]),您可以这样做:

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

或者:

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

答案 2 :(得分:0)

你可以去

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

或更传统:

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

答案 3 :(得分:0)

尝试

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

由于

答案 4 :(得分:0)

通过使用preg_grep扫描数组中的ddata...字段,检查在循环之前存在哪些字段。

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

答案 5 :(得分:0)

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

答案 6 :(得分: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;
    }
}