Хотя я не понимаю вашего утверждения о том, что неявное преобразование из пустой строки в int приведет к 0
, вы действительно можете сделать это, используя явное преобразование типов.
Рассмотрите этот код:
function f() : int {
return '0';
}
function g() : int {
return (int)'';
}
function h() : int {
return '';
}
echo 'f: ' . f();
echo '<br />';
echo 'g: ' . g();
echo '<br />';
echo 'h: ' . h();
Функция g
фактически возвращает int
со значением 0
.Функция h
не работает (соответствует функции в вашем примере).Вывод:
f: 0
g: 0
FATAL ERROR Uncaught TypeError: Return value of h() must be of the type integer, string returned in ...
Так что, если вы сделали явное приведение при возврате функции (то есть return (int)'';
), вы получите 0
.
Если вы хотите принять строковый параметр и затем вывести его как целое число, просто используйте явное приведение еще раз:
function f($p) : int {
return (int)$p;
}
echo '0: ' . f(0);
echo '<br />';
echo "'0': " . f('0');
echo '<br />';
echo "'': " . f('');
Выходы:
0: 0
'0': 0
'': 0