probleme en utilisant in_array avec une variable

expandable
Invité n'ayant pas de compte PHPfrance

08 juin 2013, 16:03

<?php
$tab=array('chien','chat','chien','bibi','chien','cheval');
$x=count($tab);
$y=0;
$tabtab=array('');
for($cont=0;$cont<=$x;$cont+=1)
	{
	$var=$tab[$cont];
	if(! in_array($var,$tabtab))
		{
			$tabtab[$y]=$tab[$cont];
			$y+=1;
		}
	}
?>
Le but c'est d'eliminer les redondances , ainsi le tableau $tabtab doit contenir (chien + chat + bibi + cheval) , je sais pas ou est le problème o.O

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

08 juin 2013, 16:41

salut,


utilise array_unique

pour ta boucle tu peu regarder du coté de foreach.


@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 619 Messages

08 juin 2013, 16:59

Bonjour,

comme moogli te la dit pour virer les doublons on utilise array_unique

voila un bout de code
<?php
$tab=array('chien','chat','chien','bibi','chien','cheval');
foreach(array_unique($tab) as $tab2){
	echo $tab2.'<br>';	
}
?>
 

expandable
Invité n'ayant pas de compte PHPfrance

08 juin 2013, 17:14

Ok merci beucoup les amis , bien que j'ai bien voulu pourquoi camarche pas quand je met
in_array($x,$tabtab)
avec $x une variable peu atre l'origine c'est les deux guillemets , car
in_array("chien",$tabtab)
ca marche très bien (il y a les guillemets autour de chien )

Mammouth du PHP | 2278 Messages

09 juin 2013, 09:02

Ton code corrigé:
<?php
$tab=array('chien','chat','chien','bibi','chien','cheval');
$x=count($tab);
$y=0;
$tabtab=array();
// < et pas <= le tableau va de 0 à 5 ici
for($cont=0; $cont<$x; $cont+=1)
{
   $var=$tab[$cont];
        if(! in_array($var,$tabtab))
                {
                        //pas indispensable mais ça évite un nouvel accès au tableau et faciliterait les tests éventuels
                        $tabtab[$y]=$var;
                        $y+=1;
                }
}
        print_r($tabtab);
?>
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD