PHP - 如何使用'休息;'在三元运算符中

时间:2014-10-23 16:13:44

标签: php foreach logic ternary-operator

我有以下功能。它将一个值与数组中的每个值进行比较。

function catExists($id) {
    $cats = getCats();
    foreach ($cats as $cat) {
        if ($cat['id'] == $id) {
            return true;break;
        } else {
            return false;
        }
    }
}

我试图通过使用三元运算符缩短整个事情。

function catExists($id) {
    foreach (getCats() as $cat) return ($cat['id'] == $id) ? true : false;
}

我遇到的问题是,当条件变为break;时,我无法使用true。即返回的值将保持还原为false,除非true条件位于array的末尾。

他们是否可以在一条线上实现这一目标?

由于

1 个答案:

答案 0 :(得分:1)

这不是三元运营商的意图。保持简单(KISS)。你根本不需要break语句,因为return结束了函数执行并将程序控制返回给主程序。

我会这样写:

function catExists($id) {
    foreach (getCats() as $cat) {
        if ($cat['id'] == $id)
            return true;          
    }
    return false; // 'return true' never happened, so return false
}

如果您真的想让它成为一行,可以将array_column()array_search()结合使用,如下所示:

function catExists($id) {
    return array_search($id, array_column(getCats(), 'id')) !== FALSE;
}