$a=1;$b="abc";echo $c=$a+$b;输出:- 1我试图了解添加字符串和 int 值时 PHP 是如何工作的。
2 回答

千万里不及你
TA贡献1784条经验 获得超9个赞
您给出的示例实际上会生成一个您可能看不到的警告(取决于您的环境设置):
警告:在第 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两种情况下都会输出。

有只小跳蛙
TA贡献1824条经验 获得超8个赞
当您添加字符串和整数时,如果字符串包含任何前导数字字符,PHP 将评估为数字类型,它只会考虑该数字字符。如果字符串不包含数字字符,那么它将被评估为“0”。
所以上面的答案是1。
as 1+"abc" PHP 会将 "abc" 计算为零。因此
1+0 = 1
- 2 回答
- 0 关注
- 228 浏览
添加回答
举报
0/150
提交
取消