Я столкнулся с небольшой проблемой. Ну, я получаю из базы данных WordPress некоторые данные user_meta, которые хранятся в виде массива, объявив переменную $all_meta_for_user = get_user_meta($user_id, 'meta_key', false)
, Затем я хотел бы проверить, есть ли какие-то конкретные данные, и если да, сделать что-то, если нет, сделать что-то еще. У меня где-то здесь в stackoverflow есть подсказка, что я могу достичь этого таким образом:
foreach($all_meta_for_user as $key=>$val) :
if (array_key_exists ('some_key', $val) && array_key_exists ('some_other', $val)) { do something } else {do something else }
endforeach;
И это хорошо работает, если в базе данных присутствует связанный «meta_key» (что очевидно :)). Но что, если это не так? Тогда, опять же, очевидно, foreach является ложным и не работает.
По сути, я хотел бы показать контент после else
даже если массив пуст. Как я могу изменить свой код, чтобы добиться этого? Я думаю, что я мог бы заставить его работать, если я сначала проверю if
массив пуст, если нет — делайте код с foreach, если да — делайте еще. Но проблема в том, что в моем другом коде много, поэтому я бы хотел избежать его дублирования.
Итак, просто вопрос в том, как сделать это хорошим способом, это не удвоит мой код 🙂
Спасибо!
PS Я действительно не мог найти подходящее название темы. Если у кого-то есть идея, как его назвать, оставьте комментарий, чтобы я мог его изменить! Спасибо!
Вы можете создать свою функцию else и объединить ее с идеей if / else. Таким образом, у вас не будет повторений, просто вызовы функций:
function elseFunction() {
//do something else
}
if (!empty($all_meta_for_user)) {
foreach($all_meta_for_user as $key=>$val){
if (array_key_exists ('some_key', $val) && array_key_exists ('some_other',$val)){
// do something
}
else {
elseFunction(); // this is changed
}
}
}
else {
elseFunction();
}
Других решений пока нет …