我有这个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 :(得分: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;
}
}