在php中求和字符串,转换为整数

时间:2013-02-18 17:58:36

标签: php string integer sum

尝试对某些哈希使用简单的“版本控制”系统,我会执行以下操作:

$last_version = '009';
$increment = '001';

$result = $last_version + $increment;

var_dump($result);

我希望:string(010)但是我得到int(10),在我跳到ifstr-pad之前,我想知道是否还有其他方法来保存想要的格式?

4 个答案:

答案 0 :(得分:3)

使用+会自动将变量转换为相应的number类型(在本例中为int,但不同的字符串格式可以投放到float)。

如果要保留所需的0左填充,可以使用sprintf()格式化结果,如下所示:

$result = sprintf('%03d', $last_version + $increment);

格式说明符%03d指定您需要一个长度为d的整数字符串(3)左边填充字符0

有关PHP的类型杂耍逻辑的更多信息可以在PHP Documentation: Type Juggling

中找到

答案 1 :(得分:1)

$last_version = '009';
$increment = '001';

$result = $last_version + $increment;

$result = (string) $result ;

var_dump($result) ;

当您尝试使用字符串执行数学运算时,它们将转换为适当的类型。在这种情况下为int。但是你可以在上面的例子中将整数转换回字符串。

答案 2 :(得分:1)

你不能添加字符串(就像那样简单)。这就是PHP隐式将两个字符串转换为整数的原因(这称为dynamic typing)。

要格式化您的号码,您可以执行以下操作:

$last_version = '009';
$increment    = '001';

$result = $last_version + $increment; // = 10
$result = sprintf("%03d", $result) // = "010"

答案 3 :(得分:1)

当您使用+时,PHP会自动将字符串转换为整数,从而显示您所看到的int(10结果。您将无法以这种方式添加字符串。因此,最好的方法是将版本保持为整数和字符串,如下所示:

$last_version = 9;
$increment = 1; 
$pad_length = 3;
$pad_string = '0';

$result = $last_version + increment; // or simply $last_version++; if increment will always be 1

$string_result = str_pad((string)$result, $pad_length, $pad_string, STR_PAD_LEFT);