PHP中的Plus运算符

时间:2014-08-20 07:10:49

标签: php

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

 The Output for this 
 $eur = "5euros"; 
 $e = 10; 
 $e += $eur; 
 echo ($e);

这是15,为什么。我想" 5欧元"是一个字符串,10是一个整数。所以我写了像105欧元的答案。那是错的。如果$ eur = 5,那将很容易理解。任何人都可以解释一下这个5欧元加10的进展情况吗?

很抱歉,如果这个问题太简单了,我就无法回答任何问题。请提前耐心等待!

3 个答案:

答案 0 :(得分:6)

+是PHP中的arithmetic operator(基本上,当两个操作数都是数组时会有例外情况,见下文)。这意味着,将隐式将操作数转换为 numeric 类型,因为它们不是数字。因此,您的字符串将为casted to numeric,结果为5

更深入,您可以查看implementation of +

if (!converted) {
   zendi_convert_scalar_to_number(op1, op1_copy, result);
   zendi_convert_scalar_to_number(op2, op2_copy, result);
   converted = 1;
} else {
   zend_error(E_ERROR, "Unsupported operand types");
   return FAILURE; /* unknown datatype */
}

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

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

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;
}

答案 1 :(得分:2)

PHP使用.来连接字符串。

 $e .= $eur; 

如果您使用+,则"5euros"会转换为整数5,因此结果为15

答案 2 :(得分:0)

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

如果您想要输出,可以使用

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