|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Membre confirmé
![]() Inscription : octobre 2007 Messages : 684 ![]() |
Bonjour,
j'ai un tableau dans du code php, jusque là tout va bien. Maintenant, quand j'écris ceci : Code :
$tableau_login[] = array(labels => ",Login"); Si j'écris simplement : alors mon tableau n'est plus bien mis en forme comme je le souhaite, mais le "Array" ne s'affiche plus et j'obtiens bien uniquement les valeurs que je veux. Quelqu'un saurait-il me dire la différence entre ces deux syntaxes et le pourquoi du "Array" ? |
|
|
00
|
|
|
#2 | ||
|
Membre émérite
![]() |
salut
Citation:
Citation:
peut être que ce que tu veux faire c'est : |
||
|
|
00
|
|
|
#3 | ||
|
Membre confirmé
![]() Inscription : octobre 2007 Messages : 684 ![]() |
En faisant un var_dump avec la première syntaxe, j'obtiens effectivement une première ligne avec "Login" comme valeur.
Et pour la solution que tu as proposé en dernier, je n'affiche pas que des login dans mon tableau, mais deux liens à côté de chaque case (ce qui me donne pour une ligne "login - lien 1 - lien 2". Et je ne comprends pas pourquoi une syntaxe m'affiche "Array" en fait, je vois pas d'où il sort. Dès que je passe à la seconde, hop il n'y est plus oO [EDIT] Je viens de regarder plus en détail le var_dump : Code :
|
||
|
|
00
|
|
|
#4 | ||
|
Membre actif
![]() Inscription : mars 2002 Messages : 202 ![]() |
Salut,
c'est normal quela première syntaxe t'affiche Array. Comme le dit julien.63, tu crées un tableau de tableaux. Donc chaque case de ton tableau contient un tableau. Si tu fais un affichage classique du genre echo, php affiche "Array", ce qui est vrai. Si tu veux afficher le contenu du tableau contenu dans la première case (ça va, ça suit ?), tu fais un print_r(tableau[x]) ou bien tu dois faire une boucle Pour ce que tu veux faire, je pense que tu dois effectivement créer un tableau de tableaux : tableau[]=array(login, lien1, lien2). Et tu peux ensuite faire : Code :
|
||
|
|
00
|
|
|
#5 | ||
|
Membre confirmé
![]() Inscription : octobre 2007 Messages : 684 ![]() |
En fait, comme code j'ai fait ceci (je supprime les doublons au passage (merci kifouillou)):
Code :
|
||
|
|
00
|
|
|
#6 |
|
Membre actif
![]() Inscription : mars 2002 Messages : 202 ![]() |
Et donc ?
|
|
|
00
|
|
|
#7 | ||
|
Membre confirmé
![]() Inscription : octobre 2007 Messages : 684 ![]() |
et ben donc je pensais que ce code fonctionnait, sans qu'il m'affiche un array ... il fonctionne parfaitement en créant le tableau_login = array(),et si je mets tableau_login[] avec labels=> login, paf ça ne fonctionne plus et ça m'affiche ceci :
Code :
|
||
|
|
00
|
|
|
#8 |
|
Membre actif
![]() Inscription : mars 2002 Messages : 202 ![]() |
1. Le code php que tu nous as montré est faux (} en trop) ;
2. Le tableau de ton dernier message ne correspond forcément pas au code de l'avant dernier ; 3. $tab[]=array($x,$y) signifie que tu mets un tableau (contenant 2 valeurs $x et $y) dans la dernière case de $tab ; 4. Si le mot array te gène, ne l'affiches pas ! |
|
|
00
|
|
|
#9 | ||
|
Membre émérite
![]() |
peux tu essayer ce code (j'ai pas testé)
Code :
|
||
|
|
00
|
|
|
#10 | |
|
Membre confirmé
![]() Inscription : octobre 2007 Messages : 684 ![]() |
Ce code ne m'enlève pas les doublons sur mon tableau :/ mais par contre le Array ne s'affiche plus =).
Citation:
2. le code de mon dernier message c'est quand je fais le var_dump pour qu'il m'affiche la structure de mon tableau créé, alors que le code d'avant correspond au tableau en lui même 3. où ça ? je n'ai pas compris là :/ 4. ben c'est ce que je cherche à faire justement ... |
|
|
|
00
|
|
|
#11 | |
|
Membre actif
![]() Inscription : mars 2002 Messages : 202 ![]() |
Pour l'erreur, c'est ce que je pensais, on oublie.
D'accord pour le 2., alors ça veut dire qu'au moment où tu fais : "$R = split(',', $R['login']);" il y a déjà une couille dans $R['login'] Et donc, quand tu fais un split de $R['login'], tu récupères un tableau dont l'une des cases est un tableau. Citation:
Par exemple : $tab=array("bonjour", 12, array(0,1), "chou-fleur"); est un tableau dont le 3ème élément est un tableau de 2 éléments. Pour le 4ème point, ce que je veux dire c'est que tu peux afficher autrement qu'en faisant simplement un print_r ou une fonction du même tonneau. Pour afficher différemment, tu peux faire une jolie boucle avec des echo dedans. Mais je suis d'accord, ça ne changera pas le fait que tu as des tableaux dans ton tableaux principal. A ta place, je commencerais par afficher $R au tout début, et $R['login'] pour voir si ça correspond bien à ce que tu veux. |
|
|
|
00
|
|
|
#12 |
|
Membre confirmé
![]() Inscription : octobre 2007 Messages : 684 ![]() |
Ah d'accord merci ^^
Pour les echo, je ne peux pas en afficher dans mon code (c'est pas moi qui veut pas c'est la hiérarchie :p), je vais essayer d'afficher $R et $R['login'] comme tu m'as dit et voir ce que ça donne. EDIT : quand j'affiche $R il m'affiche "array" et quand j'affiche $R['login'] il m'affiche tous les login que je veux (en ne se préoccupant pas des doublons mais ça c'est normal) |
|
|
00
|
|
|
#13 |
|
Membre actif
![]() Inscription : mars 2002 Messages : 202 ![]() |
Essaies d'afficher en faisant print_r($R['login']).
|
|
|
00
|
|
|
#14 |
|
Membre confirmé
![]() Inscription : octobre 2007 Messages : 684 ![]() |
En faisant print_r($R['login']) dans mon code j'obtiens bien la liste de mes pseudos non dédoublonnés.
Mais je ne peux pas mettre ceci dans mon tableau même car une fois écrite la syntaxe pour mon tableau (le code écrit plus haut), j'ai une fonction qui le transforme en beau tableau (qui le design mieux quoi). Donc aucun echo/print dans le code lui même :/ |
|
|
00
|
|
|
#15 |
|
Membre Expert
![]() |
hmmm perso j'suis un peu perdu par rapport au sujet de base. Tu pourrais rappeler brièvement ce que tu voudrais et ce qui ne va pas (en remettant les fonctions telles qu'elles sont maintenant) stp ?
|
|
|
00
|
|
|
#16 | ||||
|
Membre confirmé
![]() Inscription : octobre 2007 Messages : 684 ![]() |
Pas de problème =)
Je crée un tableau : Code :
Si maintenant, au lieu de : Code :
$tableau_login[] = array(labels => ",Login"); alors le mot "Array" disarait, MAIS mon tableau n'est plus mis en forme du tout comme il le faudrait. En faisant un var_dump j'obtiens ceci comme structure de mon tableau : Code :
J'aimerai juste garder mon code qui marche très bien (il supprime mes doublons et mes '') mais sans afficher le mot Array dans la première case du tableau et qu'il m'affiche donc que les login. |
||||
|
|
00
|
|
|
#17 | ||
|
Membre Expert
![]() |
$tableau_login = array();
et $tableau_login[] = array(); ne veulent pas dire la même chose ! Le premier sert d'instance de variable (ça permet de la reset aussi d'ailleurs) alors que le deuxième va créer un sous-tableau dans la première "case" vide disponible Sinon pour ton problème, je crois que c'est assez simple : Code php :
voilà ce que tu écris... donc en fait, il va aller te rajouter un tableau dans $tableau_login[1] (c'est ça le sous-tableau que tu vois En plus de ça, PHP ne respectant pas le scope, le fait d'utiliser deux fois la variable "$login" dans la même page peut mener vers des erreurs... Je ne sais pas trop si j'ai répondu à ta question mais sinon 2 foreach() comme ça, je pense qu'il y aurait moyen d'améliorer tout ça en faisant plus court, mais pour cela il faudrait que tu décrives d'avantage de quoi tu pars et pour arriver où ^^ |
||
|
|
00
|
|
|
#18 | |||
|
Membre confirmé
![]() Inscription : octobre 2007 Messages : 684 ![]() |
Citation:
Et du coup, est-ce qu'il y a un moyen pour passer directement à l'élément "intéréssant" et passer outre ce cas "vide" ? Le code écrit pour créer mon tableau me permet d'enlever les doublons présents (comme par exemple deux logins didentiques). Il fonctionne bien donc si je ne le change pas ça me va quand même. J'aimerai juste ne pas afficher le Array. Y'a-t-il un moyen sinon de caser quelque chose du genre : if (lacase = Array ou = '') alors on passe à l'élément suivant ? (au final, faire la même chose que pour l'élément null mais pour le cas "Array" ? ) Code :
|
|||
|
|
00
|
|
|
#19 | ||
|
Membre Expert
![]() |
Yep, tu as la fonction is_array()
donc voici : (je fais une petite optimisation, car écrire $login == "" et ne rien faire équivaut à faire $login != "" et faire qqch Code php :
|
||
|
|
00
|
|
|
#20 | ||
|
Membre confirmé
![]() Inscription : octobre 2007 Messages : 684 ![]() |
J'avais testé le != '' mais ça ne fonctionnait pas oO
Bon alors ton code marche :p c'est génial ! Sauf que là j'obtiens du coup 3 warnings provenant d'une des librairies dont je me sers : Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com