PHP-如何使用';中断';在三元算子中
我有以下功能。它将一个值与数组中的每个值进行比较PHP-如何使用';中断';在三元算子中,php,foreach,logic,ternary-operator,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) {
$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代码>当条件变为真时
。i、 e除非true
条件位于数组的末尾,否则返回的值将继续恢复为false
这是一种可以在一条线上实现的方法吗
谢谢这不是三元运算符的本意。保持简单(吻)。您根本不需要break语句,因为return
结束函数执行并将程序控件返回主程序
我会这样写:
function catExists($id) {
foreach (getCats() as $cat) {
if ($cat['id'] == $id)
return true;
}
return false; // 'return true' never happened, so return false
}
如果您真的想让它成为一行,您可以与like so结合使用:
我认为这是一种过度的杀伤力。这不是三元运算的目的。中断是完全没有意义的。返回将终止函数,使中断
代码无法访问。由于在if()
的两个分支中都有一个返回值
,因此循环只能进行一次迭代。Karth,毫无疑问,这是一次过多的操作:-)。谢谢马克,我不知道我同意。这太过分了,但我的大脑即将从混乱中崩溃。这是一个不错的选择。无论如何,非常感谢:-)
function catExists($id) {
return array_search($id, array_column(getCats(), 'id')) !== FALSE;
}