Tengo tres cadenas de números separadas por comas:
23,45,64,76,54,23,76,89,76,59
1,1,1,1,34,56,1,67,1,45
23,45,65,78,99,23,76,89
El primero y el segundo siempre tienen el mismo numero de elementos y están guardados en un campo de una base de datos. además están realacionados entre ellos así al primer elemento de uno, le corresponde el primero de otro, al segundo, el segundo...(23,1), (45,1), (64,1)...(59,45)
Lo que trato de hacer es lo siguiente, recibiendo la tercera cadena tengo que crear otra cadena que actualice la cadena dos.
Es decir, ver que numeros han cambiado entre la tres y la uno, si no ha cambiado se mantiene el valor el la cadena 2 y si ha añadido se inserta un 1 (el 23 tendría el mismo valor, el 45 tambien...el 78 que no estaba debería insertar un 1)
Se me ocurrió hacer un explode a los tres array y comparar los valores de primero y tercero e ir creando una nueva variable con los valores para el segundo.
Resulta que con mi código se insertan 1 por todos los lados en el momento en que encuentra una "no copincidencia".
La teoría es fácil... la práctica es bastante más dificil
Os dejo el código que tengo y gracias a todos por la ayuda
Código PHP :
$tar="1,1,1,1,34,56,1,67,1,45";// cadena 2 $caracAnteriores="23,45,65,78,99,23,76,89";// cadena 1 $comp= "23,45,65,78,99,23,76,89";// cadena nueva if(count($tar)>count($comp)){// busco cual es mas larga $mayor=count($tar); }else{ $mayor=count($comp); } for($i=0; $i<$mayor; $i++){ if($comp[$i]==$caracAnteriores[$i]){ $resultado.=",".$tar[$i];// si es igual uno el valor anterior }else{ $resultado.=",1"; // si no es igual pongo un uno for($j=$i; $j<$mayor; $j++){// miro las siguientes if($comp[$i]==$caracAnteriores[$j]){ $resultado.=",".$tar[$j];// si coincide pongo su valor anterior } } } } echo $resultado;