首页 > 解决方案 > string 和 int 值相加的输出是什么?

问题描述

$a=1;
$b="abc";
echo $c=$a+$b;

输出:- 1

我试图了解添加字符串和 int 值时 PHP 是如何工作的。

标签: php

解决方案


您给出的示例实际上会生成一个您可能看不到的警告(取决于您的环境设置):

警告:在第 3 行的 [...][...] 中遇到的非数字值

但是,PHP 会尽力继续工作,因此不会停止执行。

您认为 PHP 在上述情况下应该做什么?它将尝试转换$b为等效的数字并继续。在这种情况下"abc"转换为0并添加到$a,给出答案1

请考虑以下内容:

$a=1;
$b="abc";
$d="2";
echo $c=$a+$b+$d;

你希望它输出什么?它输出3是因为 PHP 可以转换"2"为等效的数字并将其添加到1.

实际上,您可以让 PHP 告诉您字符串的整数等价物正在使用什么,intval或者通过显式转换为int

echo intval("abc");
echo (int)"abc";

正如您现在应该已经预料到的那样,这0两种情况下都会输出。

来源参考:intval(int)


推荐阅读