我在面试中遇到了一个问题,
如果$x = 100 +“25%”+“$40”,$x在php中的值是什么?为什么?
我对此感到困惑。提前谢谢。
发布于 2018-06-08 04:00:10
$x=125是因为:
除了整数和字符串之外,php还会尝试将字符串转换为数字。这是通过从开头获取数字,直到字符不是有效数字的一部分。
"25%"= 25
"$40"= 0
$x=100+25+0=125
发布于 2018-06-08 04:06:57
简而言之,$x
将等于一个整数125
,并且在PHP7.1和更高版本中也会抛出通知和警告。
php > echo 100 + '25%' + '$40';
PHP Notice: A non well formed numeric value encountered in php shell code on line 1
PHP Warning: A non-numeric value encountered in php shell code on line 1
125
这是因为PHP的addition操作符只计算数值类型,并试图将所有参数隐式转换为integer
或float
。有趣的是,尝试使用array
会因为不支持的操作数类型而导致系统崩溃。
php > echo 10 + [20];
PHP Fatal error: Unsupported operand types in php shell code on line 1
为了完善,我还尝试了一些其他语言。
Python 3
print(100 + '25%' + '$40')
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
Javascript
console.log(100 + '25%' + '$40');
10025%$40
Java
System.out.println(100 + "25%" + "$40");
10025%$40
C#
Console.Write(100 + "25%" + "$40");
10025%$40
https://stackoverflow.com/questions/50749113
复制相似问题