今天我非常想知道,如果字符串包含第一个字母有整数,您可以将该值添加到另一个整数变量。如何将字符串添加到PHP中的整数
$a = 20;
$b = "5doller";
$a+=$b;
echo $a;
任何人都可以解释这是如何发生的,如果我喜欢像“美元5”字符串它不会添加。
今天我非常想知道,如果字符串包含第一个字母有整数,您可以将该值添加到另一个整数变量。如何将字符串添加到PHP中的整数
$a = 20;
$b = "5doller";
$a+=$b;
echo $a;
任何人都可以解释这是如何发生的,如果我喜欢像“美元5”字符串它不会添加。
PHP提供了一个类型转换philosofy,这将自动转换的类型的运行时数据取决于上下文。这可能有它的优点和缺点,有人反对它,认为没关系的人(就像生活中的几乎所有事物一样)。
有关其行为的详细信息,请有PHP文件一看:http://www.php.net/manual/en/language.types.type-juggling.php
它将尝试看到string
作为integer
如果使用算术运算符,以减轻你的生活“+”(检测第一个字符“5”),但如果处理不当,会导致奇怪的行为。
这并不意味着它没有类型,$ b实际上是string
,只是它试图在运行时转换它,但$ b仍然会保留为string
。
要对此进行检查和/或防止怪异的行为,你可以使用PHP的本地函数检查类型:
$a = 20;
$b = "5doller";
if(is_integer($b)){
$a+=$b;
} elseif (is_string($b)) {
$a.=$b;
}
echo $a;
或者你可以使用gettype()
这将返回变量类型,并做了开关的情况下或者任何你喜欢的东西。但在我看来,这将是过度编码,只是使用你的常识,并小心,通常它会没事的。
PHP不是强类型。
因为你的字符串的第一个字符是一个整数,您使用+操作它解释5dollar int和返回25
例如:http://en.wikipedia.org/wiki/Strong_typing#Example