如何在foreach上修复Notice消息

时间:2011-02-21 13:37:05

标签: php wordpress foreach

这是一个我的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如何解决此问题?

3 个答案:

答案 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";
}

如果不存在,则将其设置为默认值。