Foros del Web » Programando para Internet » PHP »

¿Debo comparar strings o arrays? ¿Y cómo?

Estas en el tema de ¿Debo comparar strings o arrays? ¿Y cómo? en el foro de PHP en Foros del Web. Buenas. Tengo el siguiente código que primero lee 2 archivos de texto y luego saca una linea "al azar" desde cada uno de esos archivos, ...
  #1 (permalink)  
Antiguo 24/01/2010, 00:55
Avatar de NacHox  
Fecha de Ingreso: enero-2005
Mensajes: 25
Antigüedad: 19 años, 10 meses
Puntos: 1
¿Debo comparar strings o arrays? ¿Y cómo?

Buenas.

Tengo el siguiente código que primero lee 2 archivos de texto y luego saca una linea "al azar" desde cada uno de esos archivos, para formar una frase.

El problema es que necesito que la frase no se repita cuando la muestro por pantalla.

Por ejemplo, el script me muestra en pantalla lo siguiente:

Hola como estan? -> repetido.
Busco alguien por aqui?
Hola como estan? -> repetido.
Dime que tal?


Y debería mostrarmelo así:

Hola como estan?
Busco alguien por aqui?
Dime que tal?


En el archivo uno.txt tengo la primera palabra de la frase, y en archivo dos.txt tengo otras para luego conjugarlas.

El código que estoy utilizando es el siguiente:

Código PHP:
<?

$i
=0
while(
$i<5){

$textfile ="uno.txt";
$textfile2 ="dos.txt";

$items file("$textfile");
$item rand(0sizeof($items)-1);

$items2 file("$textfile2");
$item2 rand(0sizeof($items2)-1);

echo 
"$items[$item] $items2[$item2]"
echo
"<br><br>";

$i++;
}

?>
Agradeceré enormemente a quien pueda ayudarme, ya que llevo un buen rato pensando cómo hacerlo.

Saludos.
  #2 (permalink)  
Antiguo 24/01/2010, 01:33
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: ¿Debo comparar strings o arrays? ¿Y cómo?

simplemente ve almacenando las frases en un arreglo...

cuando necesites comparar utiliza in_array() y mientras no exista, sigues creando frases y agregándolas... (:
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 24/01/2010, 22:02
Avatar de NacHox  
Fecha de Ingreso: enero-2005
Mensajes: 25
Antigüedad: 19 años, 10 meses
Puntos: 1
Respuesta: ¿Debo comparar strings o arrays? ¿Y cómo?

Muchas gracias pateketrueke.

Pero, alguien podría hecharme una mano con el código? he probado varias posibilidades pero aún no lo puedo lograr.

Muchas gracias a todos.
  #4 (permalink)  
Antiguo 25/01/2010, 01:05
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: ¿Debo comparar strings o arrays? ¿Y cómo?

Cita:
Iniciado por NacHox Ver Mensaje
Muchas gracias pateketrueke.

Pero, alguien podría hecharme una mano con el código? he probado varias posibilidades pero aún no lo puedo lograr.

Muchas gracias a todos.
sería interesante ver como lo haces...

porque de nada sirves que intentes, si no aportas información practica al tema...

vamos, si alguien hace el código por ti, ¿quien de los que pase por el tema aprenderá??
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 25/01/2010, 01:31
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años, 6 meses
Puntos: 50
Respuesta: ¿Debo comparar strings o arrays? ¿Y cómo?

Yo leería el archivo en un array (función file, ejem, ejem) y luego iría quitando elementos del array aleatoriamente (quizás con array_pop y shuffle). De la otra manera, en caso de un array muy grande, si se mantiene el array original pero se va cargando en otro array los elementos ya usados, cuantos más elementos se hayan usado, menor será la probabilidad de usar uno no usado (porque el índice aleatorio estaría en el rango de 1 a n, siendo n el tamaño del array original) de modo que podría tardar demasiado. Por ejemplo, en el caso (extremo, desde luego) de un array de un millón de elementos, siendo que se han usado novecientos noventa y nueve mil novecientos noventa y nueve, sólo quedará un elemento por usar; pero la probabilidad de generarlo aleatoriamente sería de una en un millón. Es decir, que se desperdiciarían un montón de ciclos de ejecución. ¡Suerte!
  #6 (permalink)  
Antiguo 25/01/2010, 10:10
Avatar de NacHox  
Fecha de Ingreso: enero-2005
Mensajes: 25
Antigüedad: 19 años, 10 meses
Puntos: 1
Respuesta: ¿Debo comparar strings o arrays? ¿Y cómo?

Cita:
Iniciado por pateketrueke Ver Mensaje
sería interesante ver como lo haces...

porque de nada sirves que intentes, si no aportas información practica al tema...

vamos, si alguien hace el código por ti, ¿quien de los que pase por el tema aprenderá??
Tienes toda la razón.

Como no soy muy entendido en el tema de arreglos, hice algo que está mal, y seguro muy mal, pero aquí está para que lo vean:

Código PHP:
<?

$i
=0
while(
$i<5){

$textfile ="uno.txt";
$textfile2 ="dos.txt";

$items file("$textfile");
$item rand(0sizeof($items)-1);

$items2 file("$textfile2");
$item2 rand(0sizeof($items2)-1);

$campo=array($items[$item$items2[$item2]);

if (
in_array ("$i"$campo)){
echo 
$campo
echo
"<br><br>";
}

$i++;
}

?>
Muchas gracias por su tiempo. Saludos.
  #7 (permalink)  
Antiguo 25/01/2010, 10:48
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años, 6 meses
Puntos: 50
Respuesta: ¿Debo comparar strings o arrays? ¿Y cómo?

¿Tendrás un archivo por cada anuncio o todos en un mismo archivo pero en distintas líneas? ¡Suerte!
  #8 (permalink)  
Antiguo 25/01/2010, 10:56
Avatar de NacHox  
Fecha de Ingreso: enero-2005
Mensajes: 25
Antigüedad: 19 años, 10 meses
Puntos: 1
Respuesta: ¿Debo comparar strings o arrays? ¿Y cómo?

Es así.

En el primer archivo de texto tengo por ejemplo:

hola
saludos
buenas

Y en el segundo archivo tengo complementos para esas frases:

todo bien?
como estan
alguien por aqui?

Entonces la idea es que se formen frases al azar primero toma 1 palabra del primer archivo de texto y la otra palabra desde el segundo archivo, para mostrarme la frase por pantalla pero que no se repitan 2 veces por ejemplo:

hola como estan -> se repite
hola alguien por aqui
hola como estan -> se repite
buenas como estan

Eso es lo que busco, espero haberme explicado bien.

Gracias dggluz si me puedes ayudar.
  #9 (permalink)  
Antiguo 25/01/2010, 11:47
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años, 6 meses
Puntos: 50
Respuesta: ¿Debo comparar strings o arrays? ¿Y cómo?

Te daré una manito: lee los archivos fuera del while, porque no tienes por qué andar leyéndolos siempre. Lo único que tienes que hacer dentro del while es: generar un índice aleatorio para los arrays, comprobar que el elemento correspondiente no haya sido usado, imprimir los resultados que necesites. Tienes además un error sintáctico: en la declaración de arrays, los elementos se separan por comas:
Código PHP:
$arr=array($elemento1$elemento2, ..., $elementoN); 
Prueba rehacer tu código y nos cuentas cómo te queda. ¡Suerte!

Etiquetas: arrays, comparar, strings
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 14:42.