foreach — как использовать ‘break;’ в троичном операторе

У меня есть следующая функция. Он сравнивает одно значение с каждым значением в массиве.

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,

Это способ, которым это может быть достигнуто на одной линии?

Спасибо

0

Решение

Это не то, для чего предназначены троичные операторы. Сохраняйте это простым (ПОЦЕЛУЙ). Вам вообще не нужно выражение 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;
}
1

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

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

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