为什么关注函数返回1(整数):
<?php
function f() : int
{
return '1';
}
但是调用此函数:
function f() : int
{
return '';
}
会引发错误:
Fatal error: Uncaught TypeError: Return value of f() must be of the type int, string returned in /Users/alm/test_int.php:5
在我看来,它应该返回0(整数)。 请发送有关函数输出类型转换的php文档链接。谢谢!
答案 0 :(得分:0)
尽管我不理解您的断言,即从空字符串到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
的{{1}}。函数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)'';
。
如果要接受字符串参数,然后将其输出为int,只需再次使用显式强制转换:
0
输出:
function f($p) : int {
return (int)$p;
}
echo '0: ' . f(0);
echo '<br />';
echo "'0': " . f('0');
echo '<br />';
echo "'': " . f('');
答案 1 :(得分:0)