Foros del Web » Programando para Internet » PHP »

Contabilizar Palabras iguales

Estas en el tema de Contabilizar Palabras iguales en el foro de PHP en Foros del Web. Buenas tardes, antes que nada agradezco cualquier orientación, ayuda o lo que se pueda para encontrar el hilo de donde puedo buscar, lo que prentendo ...
  #1 (permalink)  
Antiguo 12/12/2012, 13:52
 
Fecha de Ingreso: diciembre-2011
Ubicación: México
Mensajes: 26
Antigüedad: 12 años, 4 meses
Puntos: 0
Pregunta Contabilizar Palabras iguales

Buenas tardes, antes que nada agradezco cualquier orientación, ayuda o lo que se pueda para encontrar el hilo de donde puedo buscar, lo que prentendo realizar es lo siguiente:

Tengo un textarea en donde se capturan N cantidad de codigos sin orden.

ejemplo:
SD-1-1
SD-1-2
SD-1-3
SD-1-2
SD-1-1

Despues ese textarea tiene un submit a otra pagina en donde realizo un explode para obtener cada código por separado, lo que necesito saber es como puedo contabilizar cuantos codigos iguales hay.

Debería quedar así:

SD-1-1 = 2
SD-1-2 = 2
SD-1-1 = 1

Esto es porque tengo una base de datos con esos códigos almacenados y un campo que se llama cajas en donde si almacene SD-1-1 con 3 cajas, poder comparar ese resultado y guardar en otro campo 1 para decir te falta una caja.

Espero haberme explicado, nuevamente agradezco cualquier orientación o ayuda al respecto.
  #2 (permalink)  
Antiguo 12/12/2012, 13:55
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Contabilizar Palabras iguales

Puedes usar explode y luego con array_count_values te da el valor de cada uno en un array. Recorre ese array y listo tienes lo que pides. Y si recorrer una base de datos, puedes usar en una consulta COUNT(*) con GROUP BY(nombre_columna) y ya lo tienes desde la base de datos.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 12/12/2012, 14:04
 
Fecha de Ingreso: diciembre-2011
Ubicación: México
Mensajes: 26
Antigüedad: 12 años, 4 meses
Puntos: 0
Pregunta Respuesta: Contabilizar Palabras iguales

Que tal abimaelrc,

De hecho eso ya lo tengo hecho, con array_count_value me da la siguiente salida

ejemplo:

SD-1-1=> 2, SD-1-2=>2, SD-1-3=>1

El problema es que no se como puedo comparar esos valores con la base de datos, ya que me muestra como una cadena completa o al menos eso me parece y al tratar de hacerle explode nuevamente no me lo reconoce, me pudieras explicar un poco mas a detalle como pudiera compararlos, saludos y gracias por tu respuesta, por lo menos se que no voy tan perdido.
  #4 (permalink)  
Antiguo 12/12/2012, 14:06
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Contabilizar Palabras iguales

Bueno con un foreach lo vas recorriendo y vas verificando en la base de datos.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 12/12/2012, 14:07
 
Fecha de Ingreso: diciembre-2011
Ubicación: México
Mensajes: 26
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Contabilizar Palabras iguales

Voy a intentarlo, así como me lo planteas, te cuento como me fue, saludos y gracias nuevamente.
  #6 (permalink)  
Antiguo 12/12/2012, 17:40
 
Fecha de Ingreso: diciembre-2011
Ubicación: México
Mensajes: 26
Antigüedad: 12 años, 4 meses
Puntos: 0
Pregunta Respuesta: Contabilizar Palabras iguales

Escribo aquí porque el anterior mensaje al editarlo no me da todas las opciones que este si por ejemplo pondré código, saludos.

Hasta el momento es lo que llevo, no he logrado tomar los valores uno por uno recorriendo el arreglo para poder compararlo con la base de datos, agradeceria cualquier ayuda que me dieran saludos.

Código PHP:
   $codigos=$_POST['codigos'];
   
$separacion explode("\n",$codigos);
   
$contar count($separacion);
   
$contar $contar 1;
   if((
$contar!="0") and ($contar!=""))
     {
       
$entrada " ";
       for(
$c=0$c<$contar$c++)
        {
          
$entradas=$separacion[$c];
      
$entradas preg_replace("[\n|\r|\n\r]"''$entradas);
      
$entrada .= $entradas." ";
    }
      
print_r(array_count_values(preg_split('/[\s\,\.\n|\r|\n\r]/'$entrada)));
     } 
Esto es lo que me imprime, tambien me cuenta algo mas, al parecer los espacios en blanco, pero aunque los elimine me cuenta algo mas.

Array ( [] => 2 [SD-1-1] => 2 [SD-1-2] => 2 [SD-1-3] => 1 )

Última edición por canoj; 12/12/2012 a las 17:43 Razón: Me falto información por agregar.
  #7 (permalink)  
Antiguo 12/12/2012, 18:39
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Contabilizar Palabras iguales

Recorre el array y verifica si el key está vacio y lo eliminas.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #8 (permalink)  
Antiguo 12/12/2012, 19:18
 
Fecha de Ingreso: diciembre-2011
Ubicación: México
Mensajes: 26
Antigüedad: 12 años, 4 meses
Puntos: 0
Pregunta Respuesta: Contabilizar Palabras iguales

Pues he intentado de la siguiente forma, pero no consigo ahora hacerlo solamente las veces que se necesitan por ejemplo si tengo de entrada en el arreglo

SD-1-1
SD-1-2
SD-1-3
SD-1-2
SD-1-1

con el codigo que tengo me cuenta 5 veces ya que son 5 variables, pero como se repiten 2 de 5 entonces solamente necesito que el for se realice 3 veces pero me despliga lo que sigue

arreglo pos 0 2 veces
arreglo pos 1 2 veces
arreglo pos 2 1 vez
arreglo pos 3 2 veces
arreglo pos 4 2 veces

esto es logico porque ve si SD-1-2 se encuentra y si se repite 2 veces pero no deberia. no me sirve asi solo deberia aparecer

arreglo pos 0 2 veces
arreglo pos 1 2 veces
arreglo pos 2 1 vez

Este es mi código

Código PHP:
          $textarea=$_POST['textarea'];

      
$separa=explode("\n"$textarea);

      
$cont=array_count_values($separa);

      
$con=count($separa)-1;

      for(
$c=0$c<$con$c++)
        {
          
$parte $separa[$c];
          echo 
$cont[$parte];
          echo 
"<br />";
        } 
salida
2
2
1
2
2

Gracias.

Parece que encontre una solución al problema, ahora voy a realizar la comparación si tengo más problemas por aquí nos leemos, gracias de cualquier forma.

SOLUCIÓN

Código PHP:
          $textarea=$_POST['textarea'];

      
$separa=explode("\n"$textarea);

      
$cont=array_count_values($separa);

      
$con=count($cont)-1;

      for(
$c=0$c<$con$c++)
        {
          
$parte $separa[$c];
          echo 
$cont[$parte];
          echo 
"<br />";
        } 
salida
2
2
1

Última edición por canoj; 12/12/2012 a las 19:27 Razón: Encontre una solución a el problema

Etiquetas: arreglos
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 18:00.