我想替换货币缩写字母表,它目前使用的是M、L等。我想更改为印度货币数字格式,如K、L和CR
以下是代码:
if(!function_exists(\'houzez_number_shorten\')) {
function houzez_number_shorten($number, $precision = 0, $divisors = null) {
$number = houzez_clean_price_20($number);
if (!isset($divisors)) {
$divisors = array(
pow(1000, 0) => \'\', // 1000^0 == 1
pow(1000, 1) => \'K\', // Thousand
pow(1000, 2) => \'M\', // Million
pow(1000, 3) => \'B\', // Billion
pow(1000, 4) => \'T\', // Trillion
pow(1000, 5) => \'Qa\', // Quadrillion
pow(1000, 6) => \'Qi\', // Quintillion
);
}
foreach ($divisors as $divisor => $shorthand) {
if (abs($number) < ($divisor * 1000)) {
// Match found
break;
}
}
//Match found or not found use the last defined value for divisor
$price = number_format($number / $divisor, 1);
$price = str_replace(".0","",$price);
return $price . $shorthand;
}
}
我不擅长编码,因此任何帮助都将不胜感激
最合适的回答,由SO网友:Rup 整理而成
除数循环假设下一行比当前行大1000倍,因此我认为您必须更改此处的逻辑,例如,不断迭代,直到除数太大,然后使用前一行,例如。
if (!isset($divisors)) {
$divisors = array(
pow(10, 0) => \'\',
pow(10, 3) => \'K\', // Thousand
pow(10, 5) => \'L\', // Lakh
pow(10, 7) => \'CR\', // Crore
);
}
$divisor = 1;
$shorthand = \'\';
foreach ($divisors as $next_divisor => $next_shorthand) {
if (abs($number) < $next_divisor) {
// Too big; use previous row
break;
}
$divisor = $next_divisor;
$shorthand = $next_shorthand;
}
我想这就是你需要改变的全部。(我不知道你是否需要告诉number\\u格式不要使用数千,但希望它能从语言环境中获得,除非你有1000多亿欧元,否则你不会显示数千。)还请注意,现有函数未使用$precision参数。