我刚刚开始自学php。我无法理解以下问题:
The Output for this
$eur = "5euros";
$e = 10;
$e += $eur;
echo ($e);
这是15,为什么。我想" 5欧元"是一个字符串,10是一个整数。所以我写了像105欧元的答案。那是错的。如果$ eur = 5,那将很容易理解。任何人都可以解释一下这个5欧元加10的进展情况吗?
很抱歉,如果这个问题太简单了,我就无法回答任何问题。请提前耐心等待!
答案 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);