mmmm aun no soluciono mi problema. a ver si alguien me puede ayudar.
tengo listas diferentes.
uno asi Ej:
Citar
casa
auto
motocicleta
bicicleta
monopatín
etc
y la otra asi
Citar
auto
camioneta
furgón
bicicleta
departamento
y lo que quiero es que tome el primer ítem de la primera lista y lo compruebe por la segunda lista, osea, lo busque, y si esta me de un echo diciendo "si esta", luego tome el segundo ítem y lo compruebe por todos los elementos de la lista, y así sucesivamente.
espero alguien pueda ayudarme, ya k no se como hacerlo y llevo dias tratando :(.
desde ya muchas gracias.
a otra cosa. alguien sabe como hacer para que me imprima solo una coincidencia aunque encuentre 2 o mas.
saludos.
podes usar array.. y con dos ciclos for que valla comparando la lista
$Lista1 = array("casa","auto","motocicleta","bicicleta","monopatin");
$Lista2 = array("auto","camioneta","furgon","bicicleta","departamento","bicicleta");
foreach ($Lista1 as $Valor1)
{
foreach ($Lista2 as $Valor2)
{
if ($Valor1 == $Valor2)
{
echo "Coincidencia para ".$Valor1."<br>";
break;
}
}
}
no me funciona :(.
voy a poner un estracto de lo que quiero hacer.
esta es la lista uno, la leo de txt. Es informacion de cuentas de usuario en un Juego.
Citar
Juneau Juliet 18 Sorc dead
zirex Orberita 2 Sorc dead
catiiita_10 nicro 3 Nec dead
HeFeStO SoRcY_HeFeStO 77 Sorc dead
HeFeStO CdR-MoRDeLoN 6 (null) dead
martinsho Martinsho 23 (null) dead
martinsho Don_Fermin 25 Nec dead
karensitha Tkf_Karensita 76 Sorc dead
tml-enchant Tml-Calentona 6 Sorc dead
gastonz MF-Coldgirl 4 Sorc alive
Zork_95 Ventix 5 Sorc dead
tutankarroyo Arkrak 22 Sorc dead
así como se ve,el primer nombre es la cuenta, el segundo horizontal es el nombre del Personaje, depues viene el nivel, despues la clase y despues si esta vivo, todo así separado por espacios.
y este es el archivo 2, es un dat que me da la info de el momento, me dice que cuenta estan online.
Citar
[STATUS]
Version=1.8.4
Uptime=2 days 7 hours 53 minutes 30 seconds
[CHANNELS]
channel1=The Void
channel2=Diablo II-1
channel7=Clan HnM
channel8=Clan Dif
channel9=Clan Msc
channel10=Clan Lhs
channel11=Clan Foc
channel12=Clan FBI
channel13=Clan Tml
channel14=Clan CdR
[GAMES]
game1=D2XP,Ger
game2=D2XP,Btybtyb
game3=D2XP,3
game4=D2XP,Fdgdf
game5=D2XP,Bh4
game6=D2XP,Pesa2
game7=D2XP,Pesa
game8=D2XP,Melo Aka
game9=D2XP,Poto
[USERS]
user1=D2XP,matariel
user2=D2XP,ZeroMan
user3=D2XP,Udemishon
user4=D2XP,juanshop
user5=D2XP,NeGroH
user6=D2XP,baron-rojo
user7=D2XP,miwo-enxant
user8=D2XP,Raper_D
user9=D2XP,ale_aggro
user10=D2XP,Rekiem
user11=D2XP,JUANB
user12=D2XP,japy
user13=D2XP,Zeus
user14=D2XP,yetafabox
user15=D2XP,alvarillo-
user16=D2XP,VorteX
user18=D2XP,Sir_Lothar
user19=D2XP,Vlad_Drak
user20=D2XP,poncer
user21=D2XP,JeSi
user22=D2XP,neitas
user23=D2XP,Ashknaref
user24=D2XP,maxjaker
user25=D2XP,th_wd4001
user26=D2XP,th_wd4002
user27=D2XP,alvarillo
user28=D2XP,rene_w
aunke el e dat me los abre todo junto, sin saltos de linea, en vez de un salto aparece un cuadrado :P.
ya ahora este es el codigo, mas o menos. Aunque e probado muchas formas y ninguna me a dado resultado como quiero, pero este es el que tengo ahora.
<?php
set_time_limit(1);
//archivos
$server="server.dat";
$char="charlist.txt";
//abrir achivos
$abrirchar=fopen($char,"r");
$abrirserver=fopen($server,"r");
while(!feof($abrirchar))
{
$leerchar=fgets($abrirchar);
list($acc, $name)=split(" ",$leerchar);
while(!feof($abrirserver))
{
$leerserver=fgets($abrirserver);
$vec=explode("\n",$leerserver);
if ($acc==$vec[0])
{
echo $acc.'<br>';
break;
}else{
echo'no encontro nada<br>';
}
}
}
?>
lo que quiero es que tome la primera variable $acc y buske coincidencias en el texto 2 de esa manera me va a decir si esta online si no la encuentra me devuelva un echo diciendo que esta offline, si en el texto 1 hay mas de una cuenta = que solo tome 1 y las otras no las tome y así....
espero que alguien pueda ayudarme T_T.
gracias.
saludos. ;-)
¿Que tal así?
$LineasTxt = file("Archivo.txt");
$Gestor = fopen("Archivo.dat", "r");
$sContenido = fread($Gestor, filesize("Archivo.dat"));
fclose($Gestor);
foreach ($LineasTxt as $LineTxt)
{
$Datos = explode(" ",$LineTxt);
$Usuario = trim($Datos[0]);
if (!empty($Usuario))
{
if (eregi($Usuario,$sContenido)) echo $Usuario." esta on-line<br>";
else echo $Usuario." esta off-line<br>";
}
}
tu le pones los asentos :xD
saludos,
si funciono bien, gracias, pero todavia se imprime todas las coincidencias, si encuentra mas de 1 las imprime todas, y la idea es que solo imprima 1.
Pero Gracias.
Saludos.
aaa lo olvide, y me pareció raro eso de varias cuentas con el mismo nombre de usuario, pero ya caí xD
sencillo, se me ocurren varias formas de hacerlo, está puede ser una:
sustituyes aquel bloque por este:
if (!empty($Usuario))
{
$Flag = false;
foreach ($ListaUsuarios as $sUsuario) if ($sUsuario == $Usuario) $Flag = true;
if ($Flag == false)
{
$ListaUsuarios[] = $Usuario;
if (eregi($Usuario,$sContenido)) echo $Usuario." esta on-line<br>";
else echo $Usuario." esta off-line<br>";
}
}
y luego de cerrar el archivo, esta:
$ListaUsuarios[]=array();
Gracias amigo!!!. me solucionaste la Vida xD.
ahora, no se si será mucha molestia pero, yo soy novato en esto, me gustaria que me explicaras un poco que fue lo que hiciste con todo el codigo.
bueno ahi me dices si puedes o no ^^, Pero hasta ahi muchas GRACIAS.
No es nada compañero, explicando soy muy malo, por encimita es algo así:
1- creamos un array con las líneas del txt
2- vaciamos en una variable el contenido del dat
3- creamos un nuevo array para almacenar los nombre de usuarios
4- por cada info de la cuenta, obtenemos el nombre de usuario y lo comparamos con los que ya se han hido almanenando y en caso de que no este, hacemo lo propio.
5- luego obtenemos el estado de la cuenta y la mostramos.
Ahora, para que tengas una idea más amplia, puedes ir buscando lo que hace cada función y le vas agregando comentarios...
Lo fundamental es tener la idea, luego ya se ve como se hace, siempre hay varias formas ..
saludos,
disculpa, tal vez es mucho pedir pero como seria para que me imprima mas o menos así.
Citar
cuenta ONLINE
Nombre de pj1 Level Class
Nombre de Pj2 Level Class
Nombre de Pj2 Level Class
............................................
y assi sucesivamente.
T_T espero aprender algun dia T_T.
Ya tienes almacenado esos valores el array "Datos" lo demás es cuadrarlo, concatenando de acuerdo a como lo quieres, siempre puedes hacer uso de una tabla (etiquetas html) para que se vea mejor. Pero eso te toca a ti.
Y claro, si no empiezas a leer nunca aprenderás.
gracias ^^.
oie si por casualidad no me funciona, es posible que yo coloque el codigo aqui para que me lo corrijan, o me den pistas, lo que pasa es que ya probé con un while, y no me dio resultado xD me colgo el navegador por hacer un bucle infinito. :P
^^ saludos.
no necesitas otro bucle ..
en estas líneas:
if (eregi($Usuario,$sContenido)) echo $Usuario." esta on-line<br>";
else echo $Usuario." esta off-line<br>";
concatenas con el array que te mencione antes ..