PHP: преобразование числа переменной URL в число - PullRequest
0 голосов
/ 06 ноября 2010

Я пытаюсь send a number перейти со страницы на другую, чтобы сохранить ее в своей базе данных, но при использовании метода number_format число преобразуется в 0:

<?php
    $_REQUEST["myNumber"]; // the number from the url is 25%2C8 (25,8)
    // why this returns 0? 
    number_format (urlencode($_REQUEST["myNumber"]), 2, ".", "");
?>

Я думал, что urlencode функция была полезна для преобразования URL-адресов в строковые числа, где моя вина?

Ответы [ 2 ]

2 голосов
/ 06 ноября 2010

Вам нужно использовать функцию urldecode вместо urlencode, если вы хотите декодировать символы.И передайте ',' как десятичный указатель.

Таким образом, ваш код должен выглядеть следующим образом:

number_format (urldecode($_REQUEST["myNumber"]), 2, ",", "");

Но вы должны принять во внимание, что переменные в массивах $ _POST \ GET \ REQUEST уже декодировано .Возможно, ваш код может быть еще проще:

number_format ($_REQUEST["myNumber"], 2, ",");
0 голосов
/ 06 ноября 2010

number_format ожидает числа (точнее, числа с плавающей точкой) в качестве первого аргумента, и '25,8' не будет распознаваться как число с плавающей точкой. Вам нужно сделать что-то вроде:

str_replace(',','.', $_REQUEST["myNumber"]); // '25,8' --> '25.8'

для преобразования одиночной запятой в строку, которая может быть оценена как десятичное число (которое может быть сохранено в дБ).

Продолжительность:

print number_format('25,8', 2);

возвращает 25.00, что не 25.80 (что, я полагаю, является вашим желаемым результатом).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...