Преобразовать номер слова строки в номер строки php - PullRequest
1 голос
/ 13 января 2012

У меня есть число, представляющее собой строку со значением "53 МИЛЛИОНА".

            $number="53 MILLION";

Я хочу, чтобы это число было 53 000 000. Как бы это сделать? Я попытался использовать функцию number_format, но безуспешно.

Заранее спасибо!

$number="53 MILLION";

     $number= str_replace($number, "MILLION", "000,000");

    echo $number; //000,000 instead of 53,000,000

Ответы [ 5 ]

2 голосов
/ 13 января 2012

Основываясь на том, что сказал Иисус, простая функция для построения этих чисел будет:

function declare_number($number_string){
    $find_replace = array(
        ' HUNDRED'  =>  '00',
        ' THOUSAND' =>  ',000',
        ' MILLION'  =>  ',000,000',
        ' BILLION'  =>  ',000,000,000'
    );
    return str_ireplace(array_keys($find_replace),$find_replace,$number_string);
}

Это также сможет преобразовать 8сот тысяч = 800 000 и т. Д.

1 голос
/ 13 января 2012

Если у вас просто миллионное число, используйте:

$number = str_replace(' million', '000000', $number);
1 голос
/ 13 января 2012

Почему бы просто не разбить вашу строку, найти подстроку "MILLION" в вашем массиве, затем заменить ее на "000 000", а затем собрать все вместе?Я полагаю, вы можете использовать пробелы для разделения.

0 голосов
/ 13 января 2012

Зависит от того, как пример вашего вопроса. Ваш реальный случай может быть следующим: конвертировать 53 MILLION 39 TOUSEND 334 в 53,039,334 и т. Д.

Таким образом, алгоритм будет состоять в том, чтобы токенизировать строку, где бы число ни было доступно, запомните его настек.Где бы ни был доступен один из THOUSEND, MILLION, etc., умножьте то, что у вас есть в стеке, и прибавьте к числу.В конце добавить то, что осталось без умножения.Тогда у вас есть номер.

Преобразуйте номер в числовую строку (53039334) и, начиная с конца, после каждых 3 цифр добавляйте кому, и здесь у вас есть то, что вам нужно:)

0 голосов
/ 13 января 2012

Не знаю PHP, но есть алгоритм

Алгоритм "53 миллиона двести тысяч восемьсот":

Таблица перевода размера строки = [{"Миллион", 1000000}, {"Тысяча", 1000} и т. Д ...]
counter = 0
- сканирование от начала строки до конца:
---- до запятой
------ целое число сканирования - "53"
------ строка размера сканирования - "Миллион"
------ умножить целое число на размер строки перевода - "53 * 1000000"
------ Добавить к основному счетчику - счетчик + = "53000000"
---- петли * * 1014 --end

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