Для этого примера, когда я называю переменную $my_settings
, результат будет выглядеть следующим образом:PHP: массив с пустым значением дает ошибку в Еогеаспе
Array (
[personal_options] => Array (
[rich_editing] => rich_editing
[admin_color] => admin_color
[comment_shortcuts] => comment_shortcuts
[admin_bar_front] => admin_bar_front
)
[name] => Array (
[nickname] => nickname
)
[contact_info] => Array (
[url] => url
)
[about_yourself] => Array (
[description] => description
)
[yoast_seo] =>
)
Когда я бег foreach
петли, получить все любимец "Недопустимый аргумент, предоставленный для ошибки foreach() ", потому что этот массив имеет [yoast_seo] =>
, который пуст и отбрасывает его.
В настоящее время мой foreach
настроен как:
$my_settings = get_option('dsbl_profile_settings');
if (is_array($my_settings) || is_object($my_settings)) {
foreach ($my_settings as $group => $item) {
foreach ($item as $value) {
echo '<pre>'; print_r($value); echo '</pre>';
}
}
}
Как вы можете видеть, я уже использовать is_array()
и is_object()
проверку в моем цикле. Я предполагаю, что мне также нужно выполнить чек, чтобы проверить, не пусто ли он еще до запуска [yoast_seo] =>
? Я теряюсь на лучший способ осуществить это, так как я попробовал следующее в моем if
заявлении:
if (is_array($profile_fields) || is_object($profile_fields) || isset($profile_fields)) { // Attempt #1
if ((is_array($profile_fields) || is_object($profile_fields)) && isset($profile_fields)) { // Attempt #2
Я вижу, поэтому я проверял неправильный уровень для пустой переменной. Спасибо, что указали это и уточнили. –