Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中的Plus运算符_Php - Fatal编程技术网

PHP中的Plus运算符

PHP中的Plus运算符,php,Php,我刚刚开始自学PHP。我无法理解以下问题: The Output for this $eur = "5euros"; $e = 10; $e += $eur; echo ($e); 这是15。为什么? 我想“5欧元”是一个字符串,10是一个整数。所以我写了105欧元的答案。那是错误的。如果$eur=5,则更容易理解。这5欧元加10欧元怎么可能呢?PHP使用连接字符串 $e .= $eur; 如果使用+,“5euros”被强制转换为整数5,因此结果是15,+在P

我刚刚开始自学PHP。我无法理解以下问题:

 The Output for this
 $eur = "5euros";
 $e = 10;
 $e += $eur;
 echo ($e);
这是15。为什么?


我想“5欧元”是一个字符串,10是一个整数。所以我写了105欧元的答案。那是错误的。如果$eur=5,则更容易理解。这5欧元加10欧元怎么可能呢?

PHP使用
连接字符串

 $e .= $eur;
如果使用
+
“5euros”
被强制转换为整数
5
,因此结果是
15
+
在PHP中是一个数组(基本上,当两个操作数都是数组时会出现异常,请参见下文)。这意味着,如果操作数不是数字,它将隐式地将其转换为数字类型。因此,您的字符串将是,在结果中获得
5

进一步了解,您可以检查:

这部分代码代表case。当操作数不是数字数据类型时,它们将转换为数字

旁注:
+
也可用(这意味着哈希表合并):


+
运算符只需添加并显示输出值

如果需要输出,可以使用:

$e .= $eur;
echo ($e);

对于concat,请使用
而不是plus。这不是JavaScriptShere你检查了关于plus操作符的PHP文档了吗?plus操作符没有连接,它总是试图做一个数学运算,所以它是对stringsHere的int解析。这是一个关于StackOverflow的优秀列表。我并不是建议您通读所有内容,因为您刚刚开始学习PHP,但这是一个很好的参考资料。:)是的,我读过那部分。是的,在这种情况下不是串联,对吗?我的问题是一个字符串怎么可能加上一个整数?@daw
+
永远不会连接,即使您尝试
'asd'+'bla'
@daw PHP会尽最大努力完成您要求它做的事情。因此,如果希望添加字符串和整数,PHP将把字符串转换为整数。它将取字符串开头的数字,并忽略以下所有字符,以便将其转换为整数。然后它会把这两个整数相加,就好像你在做一个简单的int+int。这与JavaScript的工作原理非常相似,有一些脚本语言适合你。当然,添加一个字符串和一个整数在大多数其他非脚本语言中都不起作用。Re“5euros”被转换为整数5:是否有某种警告或错误检测可以捕捉到它?好的,让我们总结一下这个问题的答案,变量$eur被转换为整数5,这就是为什么。谢谢大家。我会读一点转换成整数的部分。
case TYPE_PAIR(IS_ARRAY, IS_ARRAY): {
   zval *tmp;

   if ((result == op1) && (result == op2)) {
      /* $a += $a */
      return SUCCESS;
   }
   if (result != op1) {
      *result = *op1;
      zval_copy_ctor(result);
   }
   zend_hash_merge(Z_ARRVAL_P(result), Z_ARRVAL_P(op2), (void (*)(void *pData)) zval_add_ref, (void *) &tmp, sizeof(zval *), 0);
   return SUCCESS;
}
$e .= $eur;
echo ($e);