Даже если массив для foreach пуст, запустите его

Я столкнулся с небольшой проблемой. Ну, я получаю из базы данных 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 Я действительно не мог найти подходящее название темы. Если у кого-то есть идея, как его назвать, оставьте комментарий, чтобы я мог его изменить! Спасибо!

1

Решение

Вы можете создать свою функцию 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();
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]