Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/01/2011, 13h52   #1
Futur Membre du Club
 
Inscription : mai 2010
Messages : 50
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 50
Points : 18
Points : 18
Par défaut Le mystère des array

Bonjour à tous,

Mystère ou incompréhension de ma part... je ne sais pas ou est ma faute.
Je vous explique:

J'ai un array "de base" contenant des informations prédéfinies. Un autre array contient des informations variables. Pour chaque entrée du second array, je vérifie si la clé est présente dans le premier. Si oui, j'affiche la valeur. Simple non ? Mais ca ne fonctionne pas !

Par contre, si j'affiche la valeur contenu dans le premier array et inscrivant la clé "en dur", cela fonctionne !

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
$a1 = array('test1' => 'valeur1', 'test2' => 'valeur2', 'test3' => 'valeur 3');
$a2 = array('bonjour', 'hello', 'test2');
 
foreach($a2 as $key) {
	if(in_array($key, $a1))
		echo $a1[$key];
	else
		echo 'Pas dans le array';
	echo '<br />';
}
 
// Ici j'essaye d'afficher la valeur en inscrivant la valeur en dur et ca marche
echo $a1['test2'];
Le résultat:
Code :
1
2
3
4
Pas dans le array
Pas dans le array
Pas dans le array
valeur2
julien731 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2011, 14h04   #2
Membre Expert
 
Avatar de Eric2a
 
Homme Eric Garidacci
Inscription : septembre 2005
Messages : 1 057
Détails du profil
Informations personnelles :
Nom : Homme Eric Garidacci
Âge : 41

Informations forums :
Inscription : septembre 2005
Messages : 1 057
Points : 1 564
Points : 1 564
Salut,

Citation:
je vérifie si la clé est présente dans le premier
Dans ce cas, il faut utiliser array_key_exists() qui vérifie si une clé existe dans un tableau.

Code :
if(array_key_exists($key, $a1))
__________________

N'oubliez pas le vote des messages utiles ainsi que le Tag [Résolu].

Mon Site Web : Corse - Actualité, Météo, Vidéos, Logiciels, ...
Eric2a est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2011, 14h04   #3
Membre chevronné
 
Inscription : mars 2005
Messages : 583
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 583
Points : 651
Points : 651
Hello,

La fonction in_array() recherche parmi les valeurs (soit valeur1, valeur2, valeur3) de ton tableau $a1, et non parmi les clefs.

Il faut tester l'existence de la clef avec isset().
__________________
Pourfendeur de singletons en croisade
Petibidon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2011, 14h08   #4
Membre éprouvé
 
Avatar de radicaldreamer
 
Homme Guillaume
Développeur Web
Inscription : décembre 2007
Messages : 353
Détails du profil
Informations personnelles :
Nom : Homme Guillaume
Âge : 21
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2007
Messages : 353
Points : 473
Points : 473
in_array va chercher sur tes "valeur1", "valeur2" du tableau $a1. Il va pas chercher sur la clef ("test1", "test2").

fais un test en changeant dans $a2 "test2" par "valeur2". Et logiquement tu auras un message d'erreur
Ca indique que la valeur a été trouvée mais que l'instruction:
Est fausse. (Bah oui, on a la valeur mais pas la clé.
__________________
Si ce que tu as à dire n'est pas plus beau que le silence, alors tais toi.

- Pensez à voter pour les messages qui vous ont été utiles ainsi que de mettre
radicaldreamer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2011, 14h43   #5
Futur Membre du Club
 
Inscription : mai 2010
Messages : 50
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 50
Points : 18
Points : 18
Super mille merci ! Je ne connaissais pas le array_key_exists C'est un grand service que vous m'avez rendu !!

[edit] vraiment c'est une aide très précieuse je viens de modifier une de mes fonctions et tout marche à merveille
julien731 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h40.


 
 
 
 
Partenaires

Hébergement Web