Forum Clubic

Comment comparer 2 tableau ARRAY en php

Bonjour,

Je viens de faire 2 requete PHP, une pour récupérer les noms de plusieurs PC et l’autre pour récupérer les PC aillant IE8.

J’ai plus de PC que de PC avec IE8, je veux donc sortir les PC n’aillant pas IE8.

Mon code ce fini par :


$ie8 = $reponseie8->fetch() //Les pcs avec IE8
$pcs = $reponsepc->fetch() // Les pcs du parc

Et donc maintenant je veux récupérer les pcs qui ne sont pas dans les 2 array.

Une pitite aide ?

Merki !!

Refais une requête sql en inversant le test pour IE8

Je ne peux pas faire un != (si c’est bien ce que tu veux) car il y a plusieur enregistrement avec le même ID de PC et donc il me trouve tous les ID PC au lieu de ceux qui n’ont pas ie8.

Je ne sais pas si je suis clair…

En gros il faut absolument que je compare les 2 array SAUF si je peux directement comparer les 2 requetes, enfin je crois…:etonne2:

J’ai rien compris alors, ce n’est pas plutot les enregitrements qui sont dans $pcs et pas dans $ie8 ?

Si c’est celà, tu as juste a comparer les données des 2 tableaux.
Je n’ai pas la synthaxe PHP en tête (trop longtemps que je n’ai aps pratiqué), en algorithme.


$!ie8 est un tableau
$CompteurTab est un entier = 1
$Test est un booléen

Pour i=1 a tableoccurence($pcs)
	$Test=vrai
	Pour x=1 a tableoccurence ($ie8)
		Si $pcs[i]==$ie8[x] alors
			$Test=faux
		finSi
	FinPour
	Si $Test==vrai alors
		$!ie8[$CompteurTab]=$pcs[i]
		$CompteurTab+=1
	FinSi
finPour

Bon, c’est une idée, après, c’est largement optimisable si tes requêtes sont triée.
Edité le 19/05/2011 à 18:21

Oui Merlon c’est bien sa que je cherche.
Mes tableaux sont triés par ordre alphabétique mais pour l’instant je vais coder ce que tu m’as mis !

Je te dit quoi, merci !

Mince je ne sais pas comment représenter le “tableoccurence($pcs)”. C’est, en faite, de i=1 jusqu’à la fin du tableau $pcs mais je ne connais pas la fonction (je recherche)
Edité le 20/05/2011 à 09:48

Mince je ne sais pas comment représenter le “tableoccurence($pcs)”. C’est, en faite, de i=1 jusqu’à la fin du tableau $pcs mais je ne connais pas la fonction (je recherche)

r[quote=“chidory”]
Je ne peux pas faire un != (si c’est bien ce que tu veux) car il y a plusieur enregistrement avec le même ID de PC et donc il me trouve tous les ID PC au lieu de ceux qui n’ont pas ie8.
[/quote]

mais ce que tu peux faire, c’est un NOT IN

SELECT * FROM PC WHERE idPC NOT IN (SELECT idPC FROM PC WHERE pcAvecIE8 = 1)

Plutôt :

SELECT * FROM PC WHERE pcAvecIE8 <> 1

Parce que faire une sous requête dans ce cas là, je trouve ça anti performant…

La fonction est sizeof($array).
Edité le 23/05/2011 à 09:24

je suis d’accord avec toi Sans-Nom. Sauf que sans la structure de la base et que avec ton système, les identifiants des pc avec IE8 ressortent quand même (cf 3eme post du topic), c’est la seule requête avec un résultat sur que l’on peu émettre.

Oui, je me rends compte de mon erreur :slight_smile: Et sinon c’est count($array) plutôt que sizeof :slight_smile: saloperies d’alias qui ont la vie longue :wink: