2013-03-18 45 views
1

今天我非常想知道,如果字符串包含第一个字母有整数,您可以将该值添加到另一个整数变量。如何将字符串添加到PHP中的整数

$a = 20; 
$b = "5doller"; 
$a+=$b; 
echo $a; 

任何人都可以解释这是如何发生的,如果我喜欢像“美元5”字符串它不会添加。

回答

0

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()这将返回变量类型,并做了开关的情况下或者任何你喜欢的东西。但在我看来,这将是过度编码,只是使用你的常识,并小心,通常它会没事的。