Intereting Posts
Поисковые запросы не работают? Обновление wpdb в wordpress с помощью json добавляет дополнительные элементы массива Добавить тег для публикации api wordpress add_theme_page to add_menu_page параметры темы convert почему category__and и category__in не работают togather? Пользовательские типы сообщений и template_redirect WordPress ставит последнее сообщение Как вы добавляете <div> вокруг второго уровня меню? Понимание того, как ссылки будут работать, когда DNS изменится, чтобы указать на новый сайт WordPress Ссылка на полный размер сообщения thumbnail Отменить настройку цвета в Настройке тем Перебирать все теги и выходные сообщения в алфавитном списке Мой WordPress дает мне ошибку 403 при сохранении сообщения / проекта с конкретными словами Как я могу отображать * только * дочернюю категорию продукта? WordPress не отправляет пароль (но только имя пользователя) после регистрации нового пользователя

Ошибка «Неопределенный индекс» при сохранении пустого массива с флажками

На моей странице настроек плагина у меня есть список флажков, которые хранят значение в массиве. Хотя он работает так, как ожидалось, всякий раз, когда я снимаю все флажки и сохраняю эти изменения, я получаю следующую ошибку:

Примечание. Неопределенный индекс: remove_field in … \ settings-profile.php в строке 19

Ниже приведен код:

if ( isset( $_POST['dsbl_options'] ) && !empty( $_POST['dsbl_options'] ) ) { update_option( 'dsbl_remove', $_POST['remove_field'] ); // (Line 19) } 

Остальную часть исходного кода можно найти здесь: GitHub

Из проведенных исследований в Интернете для аналогичной ошибки, я вижу, что рекомендация состоит в том, чтобы обернуть $_POST['remove_field'] с помощью isset . Однако это не сохраняет значения из флажков в настройках плагина.

Как упоминалось выше, эта ошибка появляется только тогда, когда все флажки сняты и сохранены. Похоже, что существует проблема при сохранении пустого значения в массиве. Хотя настройки плагина работают так, как ожидалось, я хотел бы исправить это.

Solutions Collecting From Web of "Ошибка «Неопределенный индекс» при сохранении пустого массива с флажками"

Я не вижу оригинальный фрагмент, прежде чем я больше не уверен в контексте. Неопределенное уведомление индекса, которое вы получаете, сообщает вам, что $_POST['remove_fiel‌​d'] не существует. Если флажок в вашем массиве не установлен, массив $_POST не будет иметь индекс для 'remove_field' , и вы увидите ошибку.

Чтобы этого не произошло, убедитесь, что он существует:

 if ( isset( $_POST['remove_field'] ) ) { // do stuff with the values } 

Когда в контексте OO более частым решением является спасение, если не существует никакой ценности, поэтому вы можете отменить свое условие:

 if ( !isset( $_POST['remove_field'] ) ) { return; } 

Как упоминалось здесь (благодаря bcworkz ), я смог исправить проблему, вставив NULL если все флажки не отмечены:

 if ( isset( $_POST['dsbl_options'] ) && !empty( $_POST['dsbl_options'] ) ) { if ( array_key_exists('remove_field', $_POST )) { update_option( 'dsbl_remove', $_POST['remove_field'] ); } else { // When all options are unchecked, set array to null update_option( 'dsbl_remove', NULL ); } }