Page 1 sur 1

comparer les valeurs de deux tableau (enfin presque)

Posté : 03 mai 2007, 19:26
par Davee
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.

Posté : 03 mai 2007, 23:15
par jpaul
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();
?>

Posté : 04 mai 2007, 13:06
par Invité
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.

Posté : 04 mai 2007, 16:02
par Davee
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.