这是一个我的wordpress元框foreach的例子。
foreach ($meta_box['fields'] as $field) {
$old = get_post_meta($post_id, $field['id'], true);
$new = $_POST[$field['id']];
if (isset($_POST[$field['id']])) {
update_post_meta($post_id, $field['id'], $new);
} elseif ('' == $new && $old) {
delete_post_meta($post_id, $field['id'], $old);
}
}
如果此处有空输入,我会Notice: Undefined index:
$new
如何解决此问题?
答案 0 :(得分:2)
将$new = $_POST[$field['id']];
更改为:
$new = ( IsSet ( $_POST[$field['id']] ) === true ? $_POST[$field['id']] : 'some default value' );
答案 1 :(得分:2)
您需要在调用之前测试是否设置了 $ _ POST [$ field ['id']] ,否则您将触发该错误。你在下一行检查它,所以只需将它向上移动。
foreach($meta_box['fields'] as $field){
if(isset($_POST[$field['id']])){
// POST field sent - update
$new = $_POST[$field['id']];
update_post_meta($post_id, $field['id'], $new);
} else {
// POST field not sent - delete
$old = get_post_meta($post_id, $field['id'], true);
delete_post_meta($post_id, $field['id'], $old);
}
}
答案 2 :(得分:0)
在初始化$ new之前,您可以检查它是否存在:
if(isset($_POST[$field['id']])) {
$new = $_POST[$field['id']];
}
else {
$new = "default";
}
如果不存在,则将其设置为默认值。