una parte length eliminar ejemplos dividir caracteres caracter cadena buscar php function numbers substr

php - parte - Muestre 1k en vez de 1,000



substr php ejemplos (4)

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; } }

Este es el código que tengo, pensé que estaba funcionando. aparentemente no ... alguien puede ayudar ya que no puedo resolver esto.


Aquí hay una forma genérica de hacer esto que no requiere el uso de number_format o el análisis de cadenas:

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]; }

Y aquí hay una demostración que muestra que funciona correctamente para varios casos.


Prueba esto:

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; } }

Básicamente, creo que estás utilizando el substr() incorrecto.


Recribí la función para usar las propiedades de los números en lugar de jugar con cadenas.

Eso debería ser más rápido.

Avíseme si me olvidé de alguno de sus requisitos:

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; }


No quiero estropear el momento ... pero creo que esto es un poco más simplificado.

Solo estoy mejorando @Indranil respuesta

p.ej

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);