1

我有一个变量被用于 PHP 函数中的一些算术(主要是乘法/除法)的情况。变量实际上是从另一个函数传递给函数的。但是,传递的可能是数值,也可能是字符串值。

所以基本上我有:

 $inverse = 1/$number;

where$number可以是一个有效的数字,也可以是一个字符串。

我的问题是什么时候$number是字符串?php如何处理这种情况?

最终答案并不重要。我可以想出几种不同的方法来解决这种情况。只是它出现了,我很好奇,快速的谷歌搜索无法回答我的问题。即使我不需要知道答案,我也想知道答案,因为了解 PHP 是如何工作的将对我将来有所帮助。

谢谢。

4

3 回答 3

3

当变量在数值上下文中使用时, PHP 将执行类型强制(也称为type-juggling)并尝试将当它是字符串时的值解释为数字。

请参阅除法运算符的文档:

除法运算符(“/”)返回一个浮点值,除非两个操作数是整数(或转换为整数的字符串)并且数字是可整除的,在这种情况下将返回一个整数值。

同样相关的是,字符串转换为数字

在数字上下文中评估字符串时,结果值和类型确定如下。

……

该值由字符串的初始部分给出。如果字符串以有效的数字数据开头,这将是使用的值。否则,该值将为 0(零)。有效的数字数据是一个可选的符号,后跟一个或多个数字(可选地包含一个小数点),后跟一个可选的指数。指数是一个“e”或“E”,后跟一个或多个数字。

于 2012-07-25T23:48:05.237 回答
1

PHP 默默地将字符串转换为浮点数。

于 2012-07-25T23:48:18.143 回答
1

它将接受字符串并分析它的算术值:例如"1bottle"will become 1. 一般规则是字符串第一部分中的每个数字字符都转换为浮点数。所以12.3bottle= 12.3, .3alonin= 0.3 等等。如果没有第一个数字字符,则该值为 0。

这称为类型杂耍

于 2012-07-25T23:50:42.617 回答