New question

Question:

Date: 10-09-2021 16:36:59 (In Spanish)

Como minimizar la cantidad de visitas en PHP | p. ej, 7K view, 1M view[Resolved]

Tengo un blog donde muestro la cantidad de visitas de cada entrada pero esta la muestro de la siguiente manera: 2,330 visitas y la coma "," que separa la unidad de mil de la unidad, decena y centena lo logro con la función number_format()

¿Qué quiero lograr ?

Lo que yo quiero lograr es que la cantidad de numero se minimice lo más posible y este en vez de mostrarse de esta forma: 2,330 se muestre de esta forma: 2.3K

Lo que no estoy seguro si esto lo pueda lograr con alguna de las tantas funciones que posee PHP en su arsenal de guerra o tendré que preparar un script de PHP para lograr este objetivo.

El código para mostrar la cantidad de visita no lo coloco por aquí porque es algo básico y solo diré como se llama mi variable que es:
$visita


Espero me puedan ayudar...
Tags: PHP Votes: 1 - Answers: 10 - Views: 9 Share on: Google Facebook Twitter LinkedIn Link
 

Answers:

  • Date: 13-09-2021 16:05:41 Ya que usarías el marcador 'K' para miles tal vez podrías dividir el número de visitas entre mil y redondear el resultado a 1 decimal, sustituyendo el punto por una coma y agregando la letra 'K'. Otra idea podría ser mantener el uso de number_format (que agrega la coma), tratarlo como una cadena y cortarle (con substr) los dos últimos dígitos y finalmente agregar la 'K'   Votes: 1 - Link answer
     
  • Date: 14-09-2021 09:53:07 La verdad es que decidí mejor el implementar el uso de las condicionales if y con eso cree una función que admito fue un poco extensa pero decidí llevarla solo hasta 50 mil ya que mi sitio web es nuevo y pasara mucho tiempo para que un articulo logre ser tan leído o tal vez ni lo logre ya que en promedio los blog no suelen tener artículos con tantas visitas   Votes: 0 - Link answer
     
  • Date: 14-09-2021 13:12:05
    function formatear_visitantes($visita) {
        $visitantes = number_format($visita, 0, '.', ',');
        $posicion_coma = strpos($visitantes, ",");
        return substr($visitantes, 0, ($posicion_coma + 2)) . "K";
    }
    
    $visita = 2330;
    echo formatear_visitantes($visita);


    Devuelve 2.3K
      Votes: 2 - Link answer
     
  • Date: 14-09-2021 15:33:45 Hola Baylin te comparto mi solucion para ese problema

    function reduceQuantity(int $num): string {
        if($num >= 1000000 ){
            $suffix = "M";
            $num = round(($num / 1000000), 2);
        }else if($num >= 1000){
            $suffix = "K";
            $num = round(($num / 1000), 2);
        }else{
            $suffix = "";
            $num = $num;
        }    
        return "{$num}{$suffix}";
    }
    
    // tests
    // I: 12000   O: 12K
    // I: 1200000 O: 1.2M
    // I: 900     O: 900
    
      Votes: 2 - Link answer
     
  • Date: 15-09-2021 10:54:50 Hola juan

    La verdad es que hay un problema en la función y es que por ejemplo si mi post tiene 523 visitas dice que tiene 52K y eso esta muy mal.

    Espero lo pueda solucionar para implementarlo en mi código, un saludo.
      Votes: 1 - Link answer
     
  • Date: 15-09-2021 15:17:45 Un simple if() soluciona tu problema:
    echo ($visita >= 1000) ? formatear_visitantes($visita) : $visita;

    Si el numero de visitas es igual o mayor a 1000, aplicas el formato. En caso contrario, solamente muestas el numero de visitas. Ese código iría fuera de la función. Si quieres incorporarlo a la función:
    function formatear_visitantes($visita) {
        if($visita >= 1000) {
            $visitantes = number_format($visita, 0, '.', ',');
            $posicion_coma = strpos($visitantes, ",");
            return substr($visitantes, 0, ($posicion_coma + 2)) . "K";
        }
        return $visita;
    }
      Votes: 2 - Link answer
     
  • Date: 02-11-2021 08:27:19 Hola Juan, en primer lugar quiero felicitarlo por su excelente trabajo ayudándome a darle solución a este problema que yo tenia con la abreviatura de los dígitos.

    A la misma vez quiero pedirle disculpa porque esta pregunta ya estaba solucionada y aunque pienso dejarle el estatus de Resuelta me gustaría saber si usted me puede ayudar con un pequeño detalle que no logre apreciar y que es un poco molesto y es acerca de este tema, y quien mejor que usted para ayudarme a solucionarlo ya que usted fue quien compuso la función que me ayudo con mi pequeño problema.

    La verdad es que es algo bien sencillo y resulta que si la cantidad de visitas es: 2,000 view por poner de ejemplo, la función me muestra esta cantidad: 2.0K y en realidad lo correcto siria que mostrara: 2K.

    Espero que haya entendido cual es mi pequeño problemita y me pueda ayudar a solucionarlo. El código que tengo en mi archivos de funciones es el código del ultimo comentario que usted me hizo.

    Un cordial saludo...
      Votes: 1 - Link answer
     
  • Date: 02-11-2021 17:07:31 Tuve que refrescar mi memoria con esto, pero una pequeña modificación te permite eliminar el cero (y la coma):
    function formatear_visitantes($visita) {
        if($visita >= 1000) {
            $visitantes = number_format($visita, 0, '.', ',');
            $posicion_coma = strpos($visitantes, ",");
            $numero = substr($visitantes, 0, ($posicion_coma + 2));
            if(substr($numero, -1)) {
                return substr($visitantes, 0, ($posicion_coma + 2)) . "K";
            }
            return substr($visitantes, 0, $posicion_coma) . "K";
        }
        return $visita;
    }
    Básicamente luego de que obtenemos el número que presentaremos (por ejemplo "2,0", "2.3", etc.) y antes de colocar la "K", lo que hacemos es comprobar cuál es el dígito final. Si el digito es diferente de cero, devolvemos el valor completo (2.3K, por ejemplo), pero si es cero, lo quitamos junto con la coma, quedando algo como "2K".
    La comparación del último dígito la hacemos en
     if(substr($numero, -1))
    . Recuerda que para PHP cualquier cosa que no sea cero es verdadera. Es equivalente a
     if(substr($numero, -1) > 0)
      Votes: 2 - Link answer
     
  • Date: 03-11-2021 17:21:59 Muchas gracias Juan nuevamente.
    Ya sometí a el código a pruebas y ha funcionado perfectamente, justo como yo quería que funcionara en un principio.

    A un que el código no sabría que hacer en caso de llegar a un millón de visitas. Pero de todos modos yo no me preocupo por eso porque dudo mucho que yo logre crear una entrada que llegue a tener un millón o mas de visitas.

    Un cordial saludo
      Votes: 0 - Link answer
     
  • Date: 04-11-2021 05:44:53 Espero que si logres llegar al millón de visitantes. En ese caso tu número (luego de number_format()) tendrá dos comas. Solo ubicas la posición de la primera coma y quitas todo (menos un dígito) a partir de allí y colocas una letra 'M' en lugar de una letra 'K'. Por supuesto que no será tan simple como se dice, pero ya tienes la base para hacerlo. Te aconsejo que planees por adelantado y pruebes el código para el caso de que la cifra sea 1 millón o mayor.
    Saludos y suerte.
      Votes: 2 - Link answer
     
To actively participate in the community first must authenticate, enter the system.Sign In
 
frjcbbae garagebible.com