подскажите что происходит в этой строке кода return $y ? $w + s($h - 1, $w, $y - 1, $w - $x - 1) : $x;

подскажите пожалуйста что делает эта строка кода

return $y ? $w + s($h - 1, $w, $y - 1, $w - $x - 1) : $x;

где условие в этом тернарном операторе? $y = $w - $x - 1 (см.ссылку) я думал тут должно быть логическое условие... вот этот момент я не понимаю

тут в комментариях код целиком https://ru.stackoverflow.com/a/450464/372818


Ответы (2 шт):

Автор решения: Dmitry

( ? : ) – сокращенная форма условия if-else. Приведённый код аналогичен такому:

if ($y==true) {
  return $w + s($h - 1, $w, $y - 1, $w - $x - 1);
} else {
  return $x;
}
→ Ссылка
Автор решения: Alpha

Этот ответ не является ответом на вопрос, но является ответом на вопрос в комментарии (Так как в комментарии будет не читабельно) как y может быть true если y число:

var_dump(1 == true) . PHP_EOL;
var_dump('string' == true) . PHP_EOL;
var_dump('false' == true) . PHP_EOL;
var_dump('' == true) . PHP_EOL;
var_dump(0 == true) . PHP_EOL;
var_dump(false == true) . PHP_EOL;
var_dump(null == true) . PHP_EOL;

Результатом будет:

bool(true)
bool(true)
bool(true)
bool(false)
bool(false)
bool(false)
bool(false)
→ Ссылка