Php tableau associatif, récupérer noms d'élém
Résolu/Fermé
Paul_Wi11iams
-
8 avril 2008 à 13:15
Paul_Wi11iams Messages postés 5 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 11 avril 2008 - 9 avril 2008 à 21:37
Paul_Wi11iams Messages postés 5 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 11 avril 2008 - 9 avril 2008 à 21:37
A voir également:
- Php tableau associatif, récupérer noms d'élém
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Recuperer message whatsapp supprimé - Guide
- Recuperer video youtube - Guide
- Tableau word - Guide
2 réponses
Utilisateur anonyme
8 avril 2008 à 14:37
8 avril 2008 à 14:37
Bonjour,
$arr=array();
$arr['premier']='un';
$arr['deuxieme']='deux';
$arr['troisieme']='trois';
/* ======================================= */;
foreach ($arr as $k=> $v)
{
/* Ici, ne sais pas obtenir $nomdelement, le nom de l'élément */;
echo $k ."=". $v."<br>";
} /*fin foreach*/;
$arr=array();
$arr['premier']='un';
$arr['deuxieme']='deux';
$arr['troisieme']='trois';
/* ======================================= */;
foreach ($arr as $k=> $v)
{
/* Ici, ne sais pas obtenir $nomdelement, le nom de l'élément */;
echo $k ."=". $v."<br>";
} /*fin foreach*/;
Paul_Wi11iams
Messages postés
5
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
11 avril 2008
3
8 avril 2008 à 22:48
8 avril 2008 à 22:48
D'abord, merci Giheller.
Le code (en php 5,5 chez OVH) fonctionne bien tant que le tableau est généré à l'intérieur de la fonction:
$entr_test = array();
$entr_test[dabord]='jkl';$entr_test[ensuite]='mno';$entr_test[finalement]='pqr';
echo 'ENTR+';
foreach ($entr_test as $nom => $valeur)
{
echo $nom.'='.$valeur.' ';
};
En sortie, j'obtiens bien ceci:
ENTR+dabord=jkl ensuite=mno finalement=pqr
Mais dès qu'il s'agît d'une variable en entrée de la fonction en cours, j'obtiens
Warning: Invalid argument supplied for foreach() in /home.32/c/y/b/cyberthe/www/cybedbog.phpon line 49
Les forums le disent, un tel message dans une fonction, vient d'un argument qui n'a pas été perçu comme un tableau.
Pourtant la variable dans la page qui a fait appel à cette fonction l'a bien défini comme tableau, et d'autres tableaux passent très bien dans les arguments ailleurs dans le site.
Au début de la fonction, j'ai même tenté de "forcer" les arguments en tableau par défaut comme ceci :
function cybedbog(entr=array('abc'),$sort=array('def'),$v=array('ghi'))
{ /* le contenu de la fonction qui est décrit ci avant */; };
Le résultat est inchangé…
Avez-vous une idée ?
Paul Williams
Le code (en php 5,5 chez OVH) fonctionne bien tant que le tableau est généré à l'intérieur de la fonction:
$entr_test = array();
$entr_test[dabord]='jkl';$entr_test[ensuite]='mno';$entr_test[finalement]='pqr';
echo 'ENTR+';
foreach ($entr_test as $nom => $valeur)
{
echo $nom.'='.$valeur.' ';
};
En sortie, j'obtiens bien ceci:
ENTR+dabord=jkl ensuite=mno finalement=pqr
Mais dès qu'il s'agît d'une variable en entrée de la fonction en cours, j'obtiens
Warning: Invalid argument supplied for foreach() in /home.32/c/y/b/cyberthe/www/cybedbog.phpon line 49
Les forums le disent, un tel message dans une fonction, vient d'un argument qui n'a pas été perçu comme un tableau.
Pourtant la variable dans la page qui a fait appel à cette fonction l'a bien défini comme tableau, et d'autres tableaux passent très bien dans les arguments ailleurs dans le site.
Au début de la fonction, j'ai même tenté de "forcer" les arguments en tableau par défaut comme ceci :
function cybedbog(entr=array('abc'),$sort=array('def'),$v=array('ghi'))
{ /* le contenu de la fonction qui est décrit ci avant */; };
Le résultat est inchangé…
Avez-vous une idée ?
Paul Williams
bonjour,
faites un essai avec :
des guillemets dans les postes du tableau.
$entr_test['dabord']='jkl';$entr_test['ensuite']='mno';$entr_test['finalement']='pqr';
il y apeut être une différence entre php4 et php5 au niveau du passge des variables car un passe les valeurs, l'autre passe les pointeurs.
faites un essai avec :
des guillemets dans les postes du tableau.
$entr_test['dabord']='jkl';$entr_test['ensuite']='mno';$entr_test['finalement']='pqr';
il y apeut être une différence entre php4 et php5 au niveau du passge des variables car un passe les valeurs, l'autre passe les pointeurs.
Paul_Wi11iams
Messages postés
5
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
11 avril 2008
3
>
Utilisateur anonyme
9 avril 2008 à 21:37
9 avril 2008 à 21:37
Bonjour,
C'est la suggestion de Giheller qui m'a mis sur la bonne piste, et c'est un détail que j'avais oublié de préciser qui était à l'origine du problème d'un tableau traité comme une variable.
L'argument $entr de la fonction appelante est un tableau qui est déjà passé d'une fonction à une autre fonction (sur trois niveaux !), à partir d'une base Mysql.
Croyant que php était un interpréteur, je ne savais pas qu'il y a une étape de compilation, ce qui fait qu'il n'a pas les données sous la main au moment de préparer.
Il m'a suffi, au début de chaque fonction, de déclarer les tableaux tels
$entr = array(). Du bon vieux COBOL.
Merci encore.
Paul
C'est la suggestion de Giheller qui m'a mis sur la bonne piste, et c'est un détail que j'avais oublié de préciser qui était à l'origine du problème d'un tableau traité comme une variable.
L'argument $entr de la fonction appelante est un tableau qui est déjà passé d'une fonction à une autre fonction (sur trois niveaux !), à partir d'une base Mysql.
Croyant que php était un interpréteur, je ne savais pas qu'il y a une étape de compilation, ce qui fait qu'il n'a pas les données sous la main au moment de préparer.
Il m'a suffi, au début de chaque fonction, de déclarer les tableaux tels
$entr = array(). Du bon vieux COBOL.
Merci encore.
Paul