2016-11-07 2 views
-1

Я вытаскиваю одно число из api. Выход, когда я звоню значение непосредственно являетсяПростой формат номера от api

1597188700000000 

Желаемая выход на странице

15, 971, 887 

То, что я пытаюсь это

function formatMoney($number, $fractional=false) { 
    if ($fractional) { 
     $number = sprintf('%.2f', $number); 
    } 
    while (true) { 
     $replaced = preg_replace('/(-?\d+)(\d\d\d)/', '$1,$2', $number); 
     if ($replaced != $number) { 
      $number = $replaced; 
     } else { 
      break; 
     } 
    } 
    return $number; 
} 

Тогда formatMoney($totala) ($ тотала это сумма от api), и я вижу на странице

1,597,188,700,000,000 

Любая помощь с учетом

+1

Какой вклад вы передаете этой функции? Итак, что такое '$ number' и' $ fractional'? – arkascha

+0

Нет. Я взял это из руководства php.net. – Garg

+0

Этот: http://php.net/manual/en/function.money-format.php#98783 – Garg

ответ

1

Формат денег справа налево в трехзначных группах.

Вопрос в том, каким должен быть ваш номер: 1597188700000000 или 15971887?

Вы должны быть уверены, что это устройство, а затем изменить его в желаемом формате. Если вы хотите «15, 971, 887» от 1597188700000000. Вам нужно получить каждое число от api и сделать: 1597188700000000/100000000, а затем отформатировать его.

Я думаю, что вопрос бессмыслен, хотя вы и не думаете о том, что делаете.

+0

Фактически это работает, когда мне нравится 'formatMoney ($ totala/100000000, true);' – Garg

+0

Да, но 1597188700000000! = 15971887. Если вы идете в магазин и цена 1000 $, то это не 1 $. Вы должны знать, что такое единица. Если ваш номер должен быть установлен в 16 местах (я предполагаю, что это проблема): Вы должны сохранить это следующим образом: 000000001597188. Это будет справедливо, когда ваш номер будет как: 000000159718800, так 159718800. – dudzio

+0

Если у вас есть доступ к данным источника - вы можете попытаться сохранить значение 1. Он должен сохранить 000000000000001 и не 100000000000000 – dudzio

1

Следующее будет отформатировать ваш номер, разделив тысячи на , и сняв все нули с правой части номера.

$formattedNumber = number_format(rtrim($number, '0'), 0, ',', '.'); 
+0

Зачем ПП «попробовать это»? *** Хороший ответ *** всегда будет объяснять, что было сделано и почему это было сделано таким образом, не только для OP, но и для будущих посетителей SO. –

+0

Это не работает. Он возвращает 'Неверный параметр count для number_format()'. Сначала был обработан до редактирования. – Garg

+0

Отредактирован ответ. – Peter

Смежные вопросы