avec 2 table comparer oui / nion

Eléphant du PHP | 75 Messages

04 août 2010, 12:45

bonjour

j'ai par exemple 2 array
1,2,3,4,5,6,7,8
et
2,5,6,8

je veux les comparer et avoir pour résultat
1 non
2 oui
3 non
4 non
5 oui
6 oui
7 non
8 oui

oui si je retrouve dans les 2 tableaux et non en valeur par defaut si je trouve pas

quelle est la meilleure méthode sachant qu'il n'y aura que 10 éléments maxi ?

merci

ViPHP
xTG
ViPHP | 7331 Messages

04 août 2010, 13:01

Tu peux faire une combinaison avec les fonctions array_intersect() et array_diff().
En combinant les résultats tu as ce qui n'a pas été trouvé et ce qui a été trouvé.

Eléphant du PHP | 75 Messages

04 août 2010, 13:21

mais dans une boucle c'est pas possible ? je veux affecter des valeur true et false dans une boucle


for ($i = 1; $i <= 10; $i++) {
if ( $i == $i_autreArray)
{... true}
else{.... false}
}

ViPHP
xTG
ViPHP | 7331 Messages

04 août 2010, 13:55

Tu peux faire cela en deux boucles en effet.
Un peu d'algo et on obtient ceci :

Code : Tout sélectionner

var tab1 = {1,2,3,4,5} var tab2 = {2,4,5} var res = {} Pour i allant de 0 à taille(tab1) res[i] = faux Pour j allant de 0 à taille(tab2) Si tab1[i] = tab2[j] alors res[i] = vrai FinSi FinPour FinPour

Eléphant du PHP | 75 Messages

04 août 2010, 13:58

je vais essayer ta méthode

j'ai essayé plus simple

$checktrueList = '1,5,6,8';
for ($i = 1; $i <= 10; $i++) {
$pos = false;
$nb = (string)$i;
$pos = strpos($checktrueList, $nb);
if ($pos === true) {
$checkboxList .= 'true';
}
else {
$checkboxList .= 'false';
}
}


ça ne marche pas du tout , c'est toujours à false


merci

Eléphant du PHP | 170 Messages

07 août 2010, 06:12

Bonjour,

tu peux aussi rassembler les 2 tableaux en 1 seul avec array_merge() et compter la fréquence des valeurs avec array_count_values()
( "1" => c'est dans un seul tableau, "2" => c'est dans les deux )
<?php

$a = array(1,2,3,4,5,6,7,8);
$b = array(2,5,6,8);

$c = array_count_values(array_merge($a, $b));

//echo "<pre>\n"; print_r($c); echo "</pre>\n\n";

$ok[1] = 'non';
$ok[2] = 'oui';

foreach($c as $cle => $frequence)
{
	echo "$cle $ok[$frequence]<br>\n";
}

?>

Eléphant du PHP | 75 Messages

07 août 2010, 08:26

merci mais entre temps j'ai trouvé

Code : Tout sélectionner

$chaine = '1,4,5,6'; $tab = explode(',', $chaine); $result = array(); for($i=1; $i<=10; $i++) (in_array($i, $tab)) ? $result[$i] = 'oui' : $result[$i] = 'non';