过滤后数字格式错误
Wrong number format after filter
我的一个 Wordpress 插件输出了一个价格,我想用集成过滤器更改这个价格。这是来源:
$price_str = apply_filters( 'price_format', number_format($price,0,'', '.') );
添加我添加了这个过滤器:
function change_price( $price ) {
$price = $price * 2;
return $price;
}
add_filter( 'price_format', 'change_price', 10, 1 );
如果价格是 45.000(四万五千)它不会变成 90(九十),我希望它是 90.000。
这是为什么?
尝试
function change_price( $price ) {
$price = floatval($price) * 2;
return $price;
}
add_filter( 'price_format', 'change_price', 10, 1 );
问题是 PHP 将“45.000”表示为“45”,因为点是小数点分隔符,而您的价格使用它来表示千(某些国家/地区,他们会使用逗号分隔小数点)。
function change_price( $price ) {
$price = str_replace(".", "", $price);
$price = $price * 2;
return number_format($price,0, '', '.');
}
add_filter( 'price_format', 'change_price', 10, 1 );
在那种情况下会起作用,首先删除千位分隔符,进行计算,然后以与原来相同的格式再次添加它。
请注意,如果您的价格不是整数(例如 45000.99),这会将价格四舍五入为最接近的整数,因为 number_format 的第三个参数为空。您对此无能为力,因为它已经出现在应用过滤器的原始函数中。
我的一个 Wordpress 插件输出了一个价格,我想用集成过滤器更改这个价格。这是来源:
$price_str = apply_filters( 'price_format', number_format($price,0,'', '.') );
添加我添加了这个过滤器:
function change_price( $price ) {
$price = $price * 2;
return $price;
}
add_filter( 'price_format', 'change_price', 10, 1 );
如果价格是 45.000(四万五千)它不会变成 90(九十),我希望它是 90.000。
这是为什么?
尝试
function change_price( $price ) {
$price = floatval($price) * 2;
return $price;
}
add_filter( 'price_format', 'change_price', 10, 1 );
问题是 PHP 将“45.000”表示为“45”,因为点是小数点分隔符,而您的价格使用它来表示千(某些国家/地区,他们会使用逗号分隔小数点)。
function change_price( $price ) {
$price = str_replace(".", "", $price);
$price = $price * 2;
return number_format($price,0, '', '.');
}
add_filter( 'price_format', 'change_price', 10, 1 );
在那种情况下会起作用,首先删除千位分隔符,进行计算,然后以与原来相同的格式再次添加它。
请注意,如果您的价格不是整数(例如 45000.99),这会将价格四舍五入为最接近的整数,因为 number_format 的第三个参数为空。您对此无能为力,因为它已经出现在应用过滤器的原始函数中。