Как исправить сообщение с уведомлением на моем foreach? - PullRequest
0 голосов
/ 21 февраля 2011

Вот пример моего мета-окна 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 ]

2 голосов
/ 21 февраля 2011

Вам нужно проверить, установлено ли $ _ 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 голосов
/ 21 февраля 2011

Изменить $new = $_POST[$field['id']]; на:

$new = ( IsSet ( $_POST[$field['id']] ) === true ? $_POST[$field['id']] : 'some default value' );
0 голосов
/ 21 февраля 2011

Перед инициализацией $ new вы можете проверить, существует ли он:

if(isset($_POST[$field['id']])) {
    $new = $_POST[$field['id']];
}
else {
    $new = "default";
}

Если его не существует, установите для него значение по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...