comparer les valeurs de deux tableau (enfin presque)

Eléphant du PHP | 135 Messages

03 mai 2007, 19:26

Bonjour,

je suis emmêlé dans mes tableaux.
J'ai un premier tableau avec des numéros.
un autre avec ces même numéros + une chaine.

Il faut que j'arrive à détecter si un numéro du premier tableau est présent dans les valeurs de l'autre tableau (sachant qu'il peut être présent dans plusieurs valeurs)

J'ai raisonner comme ça
je fait un boucle qui prend tour à tour les valeurs du premier tableau.
Dans cette boucle un autre boucle passe en revue toutes les valeurs du
deuxième tableau pour voir si par hasard ça lui dit quelques chose.
j'utilise pour ça la fonction preg_match.

mais voilà le code ce sera peut-être mieux.
$dirtif = array ( 0 => "DSC6342.tif", 1 =>"DSC6343.tif" );
$dirjpg = array ( 0 => "DSC6342_alpha1.jpg", 1 => "DSC6342_alpha2.jpg", 2 => "DSC6343_alpha1.jpg", 3 => "DSC6343_alpha2.jpg" );
$numdira=count ($dirtif);
$numdirb=count ($dirjpg);
$i=0;
$a=0;
//__________
while( $i<$numdira){
		$img= (explode ('.',$dirtif[$i]));
		$pattern=$img[0];
		while ($a<$numdirb) {
			$matchAlpha=preg_match( '/$pattern/', $dirjpg[$a],$p);
			$pp=number_format ($p);
			echo "$matchAlpha<br>";
			echo $pp."<br>";
			echo "$img[0]<br>";
			echo $dirtif[$i]."<br>";
			echo $dirjpg[$a]."<br>";
			if ($pp==1) {
				echo "match on value table tif $img[0] . jpg = $dirjpg[$a]<br>";
				}
			$a++;
			}
		$i++;
		}
Merci pour vos conseils.

David.
Des noeuds au cerveau!

Eléphant du PHP | 451 Messages

03 mai 2007, 23:15

Salut,
Si comme dans ton exemple on arrive a extraire aussi le numero du deuxième tableau (delimite par _) alors que penses tu de la solution suivante ?
<?php
function send_header() {
echo "<HTML>";
echo "<HEAD>";
echo "<TITLE>";
echo "Test sol compare tableaux";
echo "</TITLE>";
echo "</HEAD>";
echo "<BODY>";
}
function send_footer() {
echo "</BODY>";
echo "</HTML>";
}

send_header();

$dirtif = array ( 0 => "DSC6342.tif", 1 =>"DSC6343.tif" );
$dirjpg = array ( 0 => "DSC6342_alpha1.jpg", 1 => "DSC6342_alpha2.jpg", 2 => "DSC6343_alpha1.jpg", 3 => "DSC6343_alpha2.jpg", 4 => "DSC6344_alpha1.jpg", 5 => "DSC6345_alpha2.jpg", 6 => "DSC6346_alpha2.jpg" );

// On commence par memoriser toutes les valeurs à comparer dans un tableau indexé sur la clé à comparer
unset($compare);
foreach($dirtif as $key) {
	$img = (explode ('.',$key));
	$compare[$img[0]]=1;
}

// maintenant, on parcours l'autre tableau
foreach($dirjpg as $key) {
	echo "<br>".$key;
	// On suppose que le caractère _ permet de délimiter la chaine
	$img = (explode ('_',$key));
	echo "<br>".$img[0];
	// on vérifie si cette clé est présente dans le tableau $compare...
	if (isset($compare[$img[0]])) {
		echo "<br>match on value table tif $img[0] . jpg = $key<br>";
	}
	else {
		echo "<br>no match with $img[0] <br>";
	}
}

send_footer();
?>
Jpaul
J'essaye d'aider : parfois je fais des erreurs, on me les corrige et j'apprends un peu plus. Super ce forum :)

Invité
Invité n'ayant pas de compte PHPfrance

04 mai 2007, 13:06

Cool, c'est vraiment bien. ça marche.
bon je vais voir si ça peu coller avec toutes les situations possibles. que j'ai pas pu décrire, pour ne pas compliquer.

En tous cas, Je te remercie jpaul. :)

David.

Eléphant du PHP | 135 Messages

04 mai 2007, 16:02

Cool, c'est vraiment bien. ça marche.
bon je vais voir si ça peu coller avec toutes les situations possibles. que j'ai pas pu décrire, pour ne pas compliquer.

En tous cas, Je te remercie jpaul. :)

David.
Zut oublié de me connecté :lol:
C'est cool ça marche. incrémenter l'index c'est super utile. Je l'utilisais pas beaucoup avant.

David.
Des noeuds au cerveau!