Page 1 sur 1

Mélanger deux chaines

Posté : 05 juin 2010, 14:10
par Alex7000
Bonjour à vous tous,

Me revoilà avec un petit problème... Je ne sais même pas si c'est réalisable ... !?

Donc voici mon problème :

J'ai deux chaines :
$chaine1='0-0-0-45-0';
$chaine2='0-16-0-0-0';
J'aimerai que ces deux chaines se "mélangent" pour en faire qu'une seule...

Qu'en faite le résultat soit :
$chaineFinale ='0-16-0-45-0";
En gros : "La première chaine ($chaine1) est le "masque" (!?)
On regarde la chaine 2 ($chaine2) et on dit qu'a chaque fois que l'on trouve un chiffre "différent de zéro" ben à la même place que ce chiffre on l'ajoute à la chaine1...

Est ce clair ?

Merci de votre aide

Alex.

Re: Mélanger deux chaines

Posté : 05 juin 2010, 14:23
par Ryle
Le plus simple serait d'extraire les nombres de tes chaines pour pouvoir les manipuler plus facilement. Avec la fonction explode(), tu peux générer un tableau facilement avec chacune des chaines. Il te suffit ensuite de comparer un à un les éléments des deux tableaux, et de reconstituer ta chaine avec implode() :)

Re: Mélanger deux chaines

Posté : 05 juin 2010, 14:39
par Invité
Ryle merci de ta réponse.

Grâce à toi je viens de trouver : "array_diff_assoc"
Donc je fait :
$chaine1 = "0-0-0-45-0";
$tab1 = explode("-",$chaine1);
$chaine2 = "0-16-0-0-0";
$tab2 = explode("-",$chaine2);

$result = array_diff_assoc($tab1, $tab2);
print_r($result);

Il m'affiche :
Array ( [1] => 0 [3] => 45 )

Mais par contre je sèche quant à les mélanger !?

Si tu pouvais m'aider à trouver.. .Merci ! :)

Alex.

Re: Mélanger deux chaines

Posté : 05 juin 2010, 14:52
par Ryle
array_diff va te permettre d'identifier les éléments qui diffèrent... il t'indique qu'il y a une différence en position 1 et 3. Tu peux utiliser ces informations pour mettre à jour ton tableau. Personnellement j'opterais pour une boucle et un simple test :
$chaine1 = "0-0-0-45-0";
$tab1 = explode("-",$chaine1);
$chaine2 = "0-16-0-0-0";
$tab2 = explode("-",$chaine2);

for ($i=0; $i < count($tab1); $i++) {
   if ($tab1[$i]==0) // si la valeur dans $tab1 est égal à 0 ...
      $tab1[$i] = $tab2[$i]; // ... on récupère la valeur de $tab2 à la même position
}

$chaine = implode("-", $tab1);
echo $chaine;

Re: Mélanger deux chaines

Posté : 05 juin 2010, 14:57
par Invité
Ryle Merci de ta réponse, et de ton aide...

Cela fonctionne à merveille !

Merci beaucoup :)

Bon samedi à vous tous
Alex.