首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如果$x = 100 +“25%”+“$40”,$x在php中的值是多少?为什么?

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

Stack Overflow用户
提问于 2018-06-08 03:44:37
回答 2查看 460关注 0票数 -3

我在面试中遇到了一个问题,

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-08 04:00:10

$x=125是因为:

除了整数和字符串之外,php还会尝试将字符串转换为数字。这是通过从开头获取数字,直到字符不是有效数字的一部分。

"25%"= 25

"$40"= 0

$x=100+25+0=125

票数 4
EN

Stack Overflow用户

发布于 2018-06-08 04:06:57

简而言之,$x将等于一个整数125,并且在PHP7.1和更高版本中也会抛出通知和警告。

代码语言:javascript
复制
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操作符只计算数值类型,并试图将所有参数隐式转换为integerfloat。有趣的是,尝试使用array会因为不支持的操作数类型而导致系统崩溃。

代码语言:javascript
复制
php > echo 10 + [20];
PHP Fatal error:  Unsupported operand types in php shell code on line 1

为了完善,我还尝试了一些其他语言。

Python 3

代码语言:javascript
复制
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

代码语言:javascript
复制
console.log(100 + '25%' + '$40');
10025%$40

Java

代码语言:javascript
复制
System.out.println(100 + "25%" + "$40");
10025%$40

C#

代码语言:javascript
复制
Console.Write(100 + "25%" + "$40");
10025%$40
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50749113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档