我遇到了一个小问题。好吧,我从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我真的找不到合适的主题名称。如果有人更了解如何命名,请发表评论,以便我可以更改它!谢谢!
答案 0 :(得分:2)
你可以创建你的"否则"功能,并将其与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();
}