Всем привет. Возник интересный вопрос. Есть некая функция, в ней есть условно один аргумент:
function f($a) {
...
}
Вызов этой функции может происходить в нескольких местах кода, однако выбор переменной, которая передастся в аргумент данной функции, зависит только от самой переменой. При этом переменные могут быть либо массивом либо, например, объектом, либо принимать логическое значение. То есть, появляется несколько избыточный код:
// заранее известно, что одна из переменных будет массивом/объектом, а другая - true/false
if ($x) {f($x)}
else if ($y) {f($y)}
Однако хотелось бы увидеть что-либо вроде такого:
f($x || $y);
Но здесь происходит приведение к типам и в итоге мы получаем в теле функции в аргумент логическое значение, а именно true (оно там будет всегда, так как предыдущим кодом обеспечено, что одна из переменных массив/объект). Внимание, вопрос: возможна ли некая иная краткая запись, позволяющая так же красиво реализовать описываемое? Кроме использования краткой формы оператора "if else", естественно.
Пример для тестирования
на phpfiddle.org.