当$total_value
或$bawtry_value
为非零值时,有人可以告诉我为什么$chain_value
评估为ZERO?
PHP
$bawtry_value = utf8_encode(money('%n', $bawtry * $price));
echo "Bawtry Value";
echo '<br />';
echo $bawtry_value;
echo '<br />';
$chain_value = utf8_encode(money('%n', $chain * $price));
echo "Chain value";
echo '<br />';
echo $chain_value;
echo '<br />';
$total_value = utf8_encode(money('%n', $bawtry_value + $chain_value));
echo "Total value";
echo '<br />';
echo $total_value;
echo '<br />';
示例输出
Result Bawtry 0
Result Chain 2
Total Pairs 2
Bawtry Value
£0.00
Chain value
£39.90
Total value
£0.00
当一个是ZERO时,PHP是否存在将两个数字加在一起的问题?
任何帮助都会很棒。感谢
答案 0 :(得分:1)
看来你应该改变这一行:
$total_value = utf8_encode(money('%n', $bawtry_value + $chain_value));
到
$total_value = utf8_encode(money('%n', $bawtry * $price + $chain * $price));
甚至
$total_value = utf8_encode(money('%n', $price * ($bawtry + $chain)));
现在在计算$total_value
时,您在$bawtry_value
和$chaing_value
的开头有货币符号,如果添加货币符号,则转换为0。
如果您尝试显示以下内容,则可以看到:
echo '£0.00' + '£39.90';
这些字符串的第一个字符£
被转换为0.
但是,如果你尝试做那样的事情
echo '2£0.00' + '39.90£';
结果将是41.90,因为字符串被转换为int,直到第一个使字符串无法转换为int的字符。