Как разбить число на разряды?

Ссылка скопирована
PHP
1 ответ

Всем привет!
Гуру, подскажите пожалуйста, как добавить пробел числу (разбить на разряды)?
Есть число 123456789
Хотелось бы видеть так: 123 456 789
Через ACF добавляю числовое поле.
Значение поля: total_vvod
Создаю переменную:
$total= get_field('total_vvod');
Вывожу:
<?php echo $total; ?>

Дополнительно:

30 секунд на поиск в яндексе одного из десятков вариантов

Как разбить число на разряды?

$total= get_field('total_vvod'); $total_formatted = number_format($total, 0, '.', ' '); &lt;?php echo $total; ?&gt;

$total= get_field('total_vvod'); $total_formatted = number_format($total, 0, '.', ' '); &lt;?php echo $total; ?&gt;

Как разбить число на разряды?

&lt;?php $total = get_field('total_vvod'); $formatted_total = number_format($total, 0, '', ' '); echo $formatted_total; ?&gt;

&lt;?php $total = get_field('total_vvod'); $formatted_total = number_format($total, 0, '', ' '); echo $formatted_total; ?&gt;

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Артём Dev Ответ

Для разбиения числа на разряды в PHP используйте number_format(). В вашем случае ACF возвращает число из поля total_vvod, его нужно привести к числу и вывести с пробелом как разделителем тысяч.

$total = (float) get_field('total_vvod');
echo number_format($total, 0, '.', ' ');

$total = (float) get_field('total_vvod'); echo number_format($total, 0, '.', ' ');

Для значения 123456789 получится:

123 456 789

123 456 789

Параметры функции такие:

number_format(число, количество_знаков_после_запятой, разделитель_дроби, разделитель_тысяч)

number_format(число, количество_знаков_после_запятой, разделитель_дроби, разделитель_тысяч)

Если нужны копейки или десятичные значения, например 123 456,78, используйте:

$total = (float) get_field('total_vvod');
echo number_format($total, 2, ',', ' ');

$total = (float) get_field('total_vvod'); echo number_format($total, 2, ',', ' ');

Если поле ACF может быть пустым, добавьте проверку:

$total = get_field('total_vvod');
 
if ($total !== '' &amp;&amp; $total !== null) {
    echo esc_html(number_format((float) $total, 0, '.', ' '));
}

$total = get_field('total_vvod'); if ($total !== '' &amp;&amp; $total !== null) { echo esc_html(number_format((float) $total, 0, '.', ' ')); }

Важно: если это поле используется для расчётов, храните в ACF именно чистое число без пробелов. Форматирование делайте только при выводе. Не нужно сохранять в поле уже отформатированную строку 123 456, иначе потом будут проблемы с сортировкой, фильтрами и математикой.

Если число выводится в нескольких местах, лучше сделать маленькую функцию-хелпер, чтобы не повторять форматирование по шаблонам. Например: получить значение, проверить пустоту, привести к float/int, отформатировать и экранировать. Тогда при смене формата, например с пробела на неразрывный пробел, править придётся одно место, а не все шаблоны сайта.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно