function restyle_text($input){ $input = number_format($input); $input_count = substr_count($input, ','); if($input_count != '0'){ if($input_count == '1'){ return substr($input, +4).'k'; } else if($input_count == '2'){ return substr($input, +8).'mil'; } else if($input_count == '3'){ return substr($input, +12).'bil'; } else { return; } } else { return $input; } }
Это код, который у меня есть, я думал, что он работает. видимо, нет .. может кто-то помочь, так как я не могу понять это.
Попробуй это:
http://codepad.viper-7.com/jfa3uK
function restyle_text($input){ $input = number_format($input); $input_count = substr_count($input, ','); if($input_count != '0'){ if($input_count == '1'){ return substr($input, 0, -4).'k'; } else if($input_count == '2'){ return substr($input, 0, -8).'mil'; } else if($input_count == '3'){ return substr($input, 0, -12).'bil'; } else { return; } } else { return $input; } }
В принципе, я думаю, что вы используете substr()
неправильно.
Вот общий способ сделать это, что не требует использования number_format
или синтаксического анализа строк:
function formatWithSuffix($input) { $suffixes = array('', 'k', 'm', 'g', 't'); $suffixIndex = 0; while(abs($input) >= 1000 && $suffixIndex < sizeof($suffixes)) { $suffixIndex++; $input /= 1000; } return ( $input > 0 // precision of 3 decimal places ? floor($input * 1000) / 1000 : ceil($input * 1000) / 1000 ) . $suffixes[$suffixIndex]; }
И вот демонстрация показывает, что она работает правильно для нескольких случаев.
Я повторно написал функцию, чтобы использовать свойства чисел, а не играть со строками.
Это должно быть быстрее.
Сообщите мне, если я пропустил любые ваши требования:
function restyle_text($input){ $k = pow(10,3); $mil = pow(10,6); $bil = pow(10,9); if ($input >= $bil) return (int) ($input / $bil).'bil'; else if ($input >= $mil) return (int) ($input / $mil).'mil'; else if ($input >= $k) return (int) ($input / $k).'k'; else return (int) $input; }
Я не хочу испортить момент … но я думаю, что это немного упрощено.
Просто улучшение @Indranil ответ
например
function comp_numb($input){ $input = number_format($input); $input_count = substr_count($input, ','); $arr = array(1=>'K','M','B','T'); if(isset($arr[(int)$input_count])) return substr($input,0,(-1*$input_count)*4).$arr[(int)$input_count]; else return $input; } echo comp_numb(1000); echo '<br />'; echo comp_numb(1000000); echo '<br />'; echo comp_numb(1000000000); echo '<br />'; echo comp_numb(1000000000000);