即使foreach的数组为空,也要运行它

时间:2014-09-17 11:59:16

标签: php arrays wordpress 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 个答案:

答案 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();
}