Как добавить десятичные знаки в вывод функции php

У меня есть пользовательская функция, которая суммирует значения из настраиваемых полей в базе данных WordPress.

Значения суммированы правильно и представлены следующим образом: 1500,3 €

Как я могу добавить конечный ноль к десятичной дроби, чтобы сумма была представлена ​​​​как эта 1500,30 €

Я думаю, мне нужно отформатировать $sum с помощью number_format(), но я не уверен на 100%, как использовать number_format с моей функцией.

Это должно выглядеть примерно так:

number_format($sum, 2, '.', '');

Но могу ли я просто прикрепить это к своей функции?

Пользовательская функция:

function kd_shortcode_group_progress($atts, $content = null) {
 extract( shortcode_atts( array(
    'challenge' => '0',
    'group' => '1',
), $atts ) );

global $wpdb;
$prefix = $wpdb->prefix;
global $kd_table;
$table = $prefix."postmeta";
$table2 = $prefix."posts";

$sum = 0;

$sql = "SELECT `post_id` FROM `".$table."` WHERE `meta_key` = 'wpcf-haaste_valmis' and `meta_value` = '".$challenge."';";
$people = $wpdb->get_results($sql);

$sql4 = "SELECT `id` as `post_id` FROM `".$table2."` WHERE `post_type` = 'osallistuja' and `post_title` = '".$group."';";
$ids = $wpdb->get_results($sql4);

$pageId = '';
foreach ($ids as $i => $id) {
    $people[] = $ids[$i];
}

foreach ($people as $i => $val) {
    $pid = $val->post_id;

    $sql2 = "SELECT `meta_value` as 'value' FROM `".$table."` WHERE `meta_key` = 'wpcf-keratty' AND `post_id` = '".$pid."';";
    $sql3 = "SELECT SUM(`price`) as 'value' FROM `".$kd_table."` WHERE `for` = '".$pid."';";

    $dons1 = $wpdb->get_results($sql2);
    $dons2 = $wpdb->get_results($sql3);

    foreach ($dons1 as $i2 => $val2) {
        $sum += $val2->value;
    }
    foreach ($dons2 as $i2 => $val3) {
        $sum += $val3->value;
    }   
}

return '<div class="groupDonations"><span style="color:#55A228!important;">This group has collected </span><br>'.$sum.'€</span></div>';
}

person Oliver    schedule 29.06.2018    source источник
comment
Да. Именно это. Получили ли вы неожиданный результат, когда попробовали?   -  person rickdenhaan    schedule 29.06.2018
comment
Привет! Я пробовал это: $sum = 0; number_format ($ сумма, 2, '.', ''); Но это ничего не сделало.   -  person Oliver    schedule 29.06.2018
comment
Я не понимал, что должен был выразить это так: $sum = 0; $sum = number_format($sum, 2, '.', '') Теперь это работает.   -  person Oliver    schedule 29.06.2018


Ответы (2)


Вам нужно использовать WordPress number_format_i18n

$formatted = number_format_i18n( 1500.3, 2 ); // 1500.30

number_format тоже работает, но не зависит от языка

echo number_format(1500.3, 2, '.', ''); // 1500.30

Попробуйте онлайн здесь

person Hyyan Abo Fakher    schedule 29.06.2018
comment
Привет! Я попробовал оба метода, и оба сработали. Сейчас я использую number_format_i18n. Я не знал, что в wordpress раньше была функция форматирования чисел на основе локали. Спасибо! - person Oliver; 29.06.2018

$sum = 0; 
echo number_format($sum, 2, '.', ''); 

работает нормально - может быть проблема с внешним интерфейсом при его отображении? попробуйте использовать его как строку,

$sum = "" . number_format($sum, 2, '.', '');
person Jax297    schedule 29.06.2018