За последние 24 часа нас посетили 17746 программистов и 1712 роботов. Сейчас ищут 982 программиста ...

форматирование числа

Тема в разделе "PHP для новичков", создана пользователем vikrorpert, 14 ноя 2012.

  1. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    как вывести число в формате +7 код 5цифр
     
  2. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    а теперь еще раз, и по русски.
    - какие исходные данные
    - и что с ними нужно сделать
     
  3. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    есть число 712345678
    хочу отобразить его так +7 123 456789
     
  4. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    Код (PHP):
    1. echo preg_replace('/^(\d)(\d{3})(\d+)$/', '+$1 $2 $3', '712345678'); 
     
  5. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    это число или строка, состоящая из одних цифр?
     
  6. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    а какая разница?
     
  7. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    надеюсь ты пошутил? если что, я про число топикстартера спрашивал, а не тебя с твоим примером.
     
  8. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    какие тут шутки. реально непонимаю что это меняет
     
  9. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    блин, 1000 и '1000' это разные вещи! изначальный вопрос "как вывести число …" строка из цифр это не число.

    PHP конечно маскирует тайпкастинг и мы можем не замечать с каким типом работаем сейчас, но хранить номера как числа ПЛОХО! просто может не хватить числа, ёмаё ))) телефон с кодом от 10 знаков (я хз сколько макс.), номер кредитки 16 знаков, банковский счет 20 знаков — столько знаков не помещается в ЧИСЛЕ в языке PHP.
     
  10. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    для всего есть свой инструмент:
    для юникода - mb_strings
    для больших целых - gmp, и все поместиться
     
  11. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    вот именно, под задачу выбираем средства. иди почитай про базовые типы. уясни что такое числовой тип.
     
  12. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Числа не хватит.

    Код (PHP):
    1. $int=79145365522;
    2. var_dump($int, //float(79145365522)
    3. (int)$int, //int(1835954194)
    4. (int)(string)$int, //int(2147483647)
    5. ''.$int.'' //string(11) "79145365522"
    6. ); 
    Числа больше 2147483647, считаются float.
    php.net/manual/ru/language.types.integer.php

    #3 Переполнение целых на 32-битных системах
    Число int(2147483647).
    На один больше:
    Код (PHP):
    1. $large_number = 2147483648;
    2. var_dump($large_number); // float(2147483648)  
    Пример #4 Переполнение целых на 64-битных системах
    Чиcло int(9223372036854775807).
    На один больше:
    Код (PHP):
    1. $large_number = 9223372036854775808;
    2. var_dump($large_number); // float(9.2233720368548E+18)  
     
  13. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    да и просто НЕЗАЧЕМ ))) нам не нужно складывать или умножать номера телефонов или банковских счетов! это просто длинные идентификаторы.
     
  14. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    какие все умные )))
    а если заказчик захочет сложить :
    198723192837129837129381723981273 + 238947239847239847239487234
    вы через строки будете корячится? нуну )) детсад


    Your,
    тебе нехватит, потому что неумеешь или незнаешь как работать с длинными целыми.
    а я знаю - поэтому для меня - это не проблема.
     
  15. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    разговор был о форматировании для вывода. В таком случае строка идеальное решение. Остальное уже личные комплексы каждого.

    и часто на пхп приходится складывать такие числа?
     
  16. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    ОМГ, всезнайка...
    Который не знает, что такое целое число, а что такое float число.


    http://pear.php.net/package/Math_BigInteger/docs/latest/li_ ... teger.html
     
  17. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    дело не в том - часто или нет. а в том что есть возможность. и если понадобится - то сделать можно.
    решение со строкой я как раз и привел. если кто забыл. и это и есть лучшее решение в данном случае. с этим я и не спорю.
    я о другом. что если нужно будет работать с такими данными как с числами а не строками - то тоже нет проблем.

    а мне тут начали чтото доказывать что в пхп нельзя работать с числами больше PHP_INT_MAX. нюню

    Добавлено спустя 6 минут 3 секунды:
    я то как раз знаю. а вот ты походе и правда считаешь что в нашей вселенной нет чисел больше чем PHP_INT_MAX ))
     
  18. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Читай выше, что писал, а не глазами хлопай и рассказывай мне про PHP_INT_MIN and PHP_INT_MAX.
    Не считай себя умнее разработчиков php.
    Для целого числа если ты хочешь целое число, нужно другие биты системы.

    А то, что ты там мега тайну скрыл, это не о чем не говорит.

    Поделись с нами о всезнайка.