Цена формата PHP в переменной - PullRequest
4 голосов
/ 19 сентября 2011

У меня есть переменная, которая содержит цену. Однако он берет 0 от цены, если он имеет центы. Например, 9,5 долл. Вместо 9,50 долл. Но если цена составляет 9 долларов, я хочу отобразить ее как 9 долларов.

Центы не будут отображаться так часто, поэтому я хочу, чтобы суммы в долларах были короткими, но будет странный случай, когда у меня будут центы, но он просто добавляет нули к долларам, когда центов нет.

Как бы я обслуживал оба сценария в моем коде?

foreach($av as $day => $a){
                            if(isset($price[$ro['Room']['id']][$r['Rate']['id']][$day])){   
                                $arr_total += $price[$ro['Room']['id']][$r['Rate']['id']][$day];
                            } else {
                                $errors[] = "No Set Price for $day";
                            }

Ответы [ 5 ]

4 голосов
/ 20 сентября 2011

Вы можете использовать:

number_format($price, !($price == (int)$price) * 2);

Примеры:

$price = 9.01;
echo number_format($price, !($price == (int)$price) * 2);
// output: 9.01

$price = 9.00;
echo number_format($price, !($price == (int)$price) * 2);
// output: 9
3 голосов
/ 20 сентября 2011

псевдопсевдокод:

if ($thePrice == intval($thePrice))
    $thePrice = intval($thePrice);
else
    $thePrice = money_format('%i', $thePrice);

См. money_format ()

1 голос
/ 20 сентября 2011

Есть пара основных функций, которые могут вас заинтересовать

  • Первая - money_format();.Эта функция идеально подходит для ваших целей, но она не будет работать в системах Windows.Если вы можете гарантировать, что ваш код никогда не будет использоваться в Windows, я бы использовал это.

  • Второй - number_format();.Опять же, эта функция хорошо подходит для ваших нужд, но с дополнительным преимуществом - возможность работать в Windows.Однако он не выводит отформатированную валюту, но вы можете использовать ее, по крайней мере, для получения десятичных знаков.

0 голосов
/ 20 сентября 2011

Когда вы получите значение из базы данных, оно, вероятно, будет строкой, поэтому вам просто нужно преобразовать ее в число с плавающей запятой.

floatval($price)
0 голосов
/ 20 сентября 2011

Хмм, вы просто пытаетесь умножить число на 1. Я думаю, что это может сработать, не проверено ..

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