如果$x=100+“;25%”+“$40”;php中$x的值是多少?为什么?

如果$x=100+“;25%”+“$40”;php中$x的值是多少?为什么?,php,Php,我在一次采访中遇到了一个问题 如果$x=100+“25%”+“$40”,那么$x在php中的值是多少,为什么 我对此感到困惑。提前感谢。$x=125,因为: 除了整数和字符串,php然后尝试将字符串转换为数字。这是通过在开始时获取数字,直到字符不是有效数字的一部分 “25%”=25 “$40”=0 $x=100+25+0=125简短回答,$x将等于一个整数125,并将在PHP7.1及更高版本中抛出通知和警告 php > echo 100 + '25%' + '$40'; PHP Notic

我在一次采访中遇到了一个问题

如果$x=100+“25%”+“$40”,那么$x在php中的值是多少,为什么

我对此感到困惑。提前感谢。

$x=125,因为:

除了整数和字符串,php然后尝试将字符串转换为数字。这是通过在开始时获取数字,直到字符不是有效数字的一部分

“25%”=25

“$40”=0


$x=100+25+0=125

简短回答,
$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的运算符只计算数值类型,并尝试将所有参数隐式转换为
整数
浮点
。有趣的是,尝试使用
数组
执行此操作将导致PHP由于不支持的操作数类型而崩溃

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'
Java

System.out.println(100 + "25%" + "$40");
10025%$40
C#


也许试试看<代码>$x
和代码一样毫无价值,应该会导致至少4个小时的办公室洗礼。这个问题让你困惑的是什么?你通过面试了吗?…你问题中的花哨引语是故意的吗?如果是:语法错误。
System.out.println(100 + "25%" + "$40");
10025%$40
Console.Write(100 + "25%" + "$40");
10025%$40