Foros del Web » Programando para Internet » PHP »

Contar elementos

Estas en el tema de Contar elementos en el foro de PHP en Foros del Web. Hola: Tengo la siguiente pregunta y no se me ocurre como solucionarla. Supongamos que tenemos la siguiente cadena: Código PHP: $cad  =  "AAAAAAAAAAAAAAAAAaeeeeeAeTTTTTTxxxXXXXX" ;  lo ...
  #1 (permalink)  
Antiguo 07/04/2005, 19:51
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Contar elementos

Hola:
Tengo la siguiente pregunta y no se me ocurre como solucionarla. Supongamos que tenemos la siguiente cadena:
Código PHP:
$cad "AAAAAAAAAAAAAAAAAaeeeeeAeTTTTTTxxxXXXXX"
lo que quiero hacer es contar la cantidad de elementos de cada tipo que hay en la variable $cad. Por ejemplo sería algo como esto:
Cita:
Cantidad de A: 17
Cantidad de a: 1
Cantidad de e: 6
Cantidad de T: 6
Cantidad de x: 3
Cantidad de X: 5
Muy importante que sea "case sensitive" pues luego tengo que calcular el prociento de letras respecto a la cantidad disponible en la variable. Alguna sugerencia al respecto??

Salu2
__________________
Ing. Reynier Pérez Mira
  #2 (permalink)  
Antiguo 07/04/2005, 20:51
Avatar de Nox
Nox
 
Fecha de Ingreso: diciembre-2004
Ubicación: Viña del Mar
Mensajes: 72
Antigüedad: 13 años
Puntos: 1
solo puedes trabajar con php? o tambien con mysql?
__________________
todo es serio y ordenado, todo es racional y programado, precisamente porque todo es falso e ilusorio
  #3 (permalink)  
Antiguo 07/04/2005, 21:11
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Si solo con PHP
__________________
Ing. Reynier Pérez Mira
  #4 (permalink)  
Antiguo 07/04/2005, 22:21
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Creo que eso lo podrías resolver con una función como count_chars()
http://www.php.net/manual/en/function.count-chars.php

Te pongo el enlace en inglés porque hay un ejemplo (en español no hay ejemplo).

Saludos
  #5 (permalink)  
Antiguo 07/04/2005, 22:52
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 12 años, 8 meses
Puntos: 17
yo suelo hacer un
count(@explode($caracter,$cad)) - 1;
pero creo que no es muy lindo ni aceptable...
  #6 (permalink)  
Antiguo 07/04/2005, 23:14
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Seppo:
Como de antemano no conoces qué caracteres son los que están presentes, tendrías que probar con todo el alfabeto, en mayúsculas, minúsculas, los números y los caracteres especiales.
Mejor simplemente utilizas la función que puse arriba y queda resuelto muy sencillamente. Si php ya trae implementada una función que hace eso... para qué reinventar la rueda?

Saludos
  #7 (permalink)  
Antiguo 08/04/2005, 08:33
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Miren

Este es el código que he hecho pero ahora no me calcula bien el porciento de letras:
Código PHP:
<?php
 error_reporting
(4);
 
$texto "AAAAAAAAeeeaaaaaBBBBBBIIIIIZZZZZ";
 
$porciento 0;
 
$result count_chars($texto,0);
 
$cantidad strlen($texto);
 
$count 0;
 echo 
"La cadena original es: $texto <br>";
 for(
$i=0$i<count($result);$i++){
  if(
$result[$i]!=0){
   echo 
"Hay $result[$i] letras " chr($i) , " en la cadena.<br>";
   if(
$texto[$i] == $texto[$i+1]){
    
$count $count 1;
    
$porciento $cantidad*$count/100;
    echo 
"Hay un $porciento % de letras " chr($i) , " en la cadena.<br>";
   }
  }
 }
?>
que puede estar mal ?
Salu2
__________________
Ing. Reynier Pérez Mira
  #8 (permalink)  
Antiguo 08/04/2005, 09:09
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Disculpen

Ya lo he arreglado pero ahora me han dicho que debo hacerlo solo para las vocales, o sea, tanto mayusculas como minusculas. Este es el código arreglado:
Código PHP:
<?php
 error_reporting
(4);
 
$texto "AAAAAAAAeeeaaaaaBBBBBBIIIIIZZZZZ";
 
$porciento 0;
 
$result count_chars($texto,0);
 
$cantidad strlen($texto);
 
$count 0;
 echo 
"La cadena original es: $texto <br>";
 for(
$i=0$i<count($result); $i++){
  if(
$result[$i]!=0){
   echo 
"Hay $result[$i] letras " chr($i) , " en la cadena.<br>";
   
$porciento $result[$i]*100/$cantidad;
   echo 
"Hay ".round($porciento,2)." % de letras " chr($i) , " en la cadena.<br>";
  }
 }
?>
Salu2
__________________
Ing. Reynier Pérez Mira
  #9 (permalink)  
Antiguo 11/04/2005, 07:55
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Reynier

En PHP tienes la función count_chars() ... también tienes: substr_count() .. pero realmente count_chars() ya hace todo lo que pretendes hacer.

Tienes que demostrar algún tipo de "algoritmo" (al usar strings como "arrays" y recorrerlos) .. o alguna razón para "liarte" tanto cuando ya lo tienes hecho en funciones de PHP nativas?

Un saludo,
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:01.