我正在尝试send a number
从一个页面到另一个页面,以便将其保存在我的数据库中,但当我使用number_format
方法时,该数字将转换为0
:< / p>
<?php
$_REQUEST["myNumber"]; // the number from the url is 25%2C8 (25,8)
// why this returns 0?
number_format (urlencode($_REQUEST["myNumber"]), 2, ".", "");
?>
我认为urlencode
函数可以将网址号转换为字符串数,这是我的错?
答案 0 :(得分:2)
如果要解码字符,则需要使用urldecode函数而不是urlencode。并将','作为十进制指针传递。
所以你的代码应该是这样的:
number_format (urldecode($_REQUEST["myNumber"]), 2, ",", "");
但您需要考虑$ _POST \ GET \ REQUEST数组中的变量已经解码。也许,您的代码可能更简单:
number_format ($_REQUEST["myNumber"], 2, ",");
答案 1 :(得分:0)
number_format
期望一个数字(浮点数,确切地说)作为第一个参数,而'25,8'
不会被识别为float。你需要做类似的事情:
str_replace(',','.', $_REQUEST["myNumber"]); // '25,8' --> '25.8'
将单个逗号转换为可以计算为十进制数的字符串(可以存储在db中)。
运行:
print number_format('25,8', 2);
返回25.00
,而25.80
不是{{1}}(我认为这是您想要的结果)。