Page 1 sur 2

premiers pas

Posté : 06 sept. 2006, 18:51
par kabukishido
Bonjour le monde :D

Je débute avec PHP et c'est vraiment le top !!!

Par contre, après avoir fait joujou avec les variables je comprends pas pourquoi :
<?
$tab = array();
$i=0;
while ($i<10){
$tab[$i] = $i;
$i++;
}
echo $tab."<br>";
?>
m'affiche "array" et non pas 1,2,3...10.

Merci

kabukishido

Posté : 06 sept. 2006, 19:13
par charabia
Pour afficher le tableau il faut que tu utilises $tab[$i] et non $tab tout court.

De plus si tu veux qu'il affiche de 0 à 9, il faut que tu mettes ton affichage dans la boucle.

Si tu le mets à l'extérieur tu n'auras aucun résultat.
<?php
$tab = array(); 
$i=0; 
while ($i<10){ 
$tab[$i] = $i;
echo $tab[$i].", ";
$i++;
} 
?>
Utilises de préférence <?php au lieu de <? ;)

Posté : 06 sept. 2006, 23:36
par HanX
petite astuce pour lire un tableau (uniquement pour tester, ne fais jamais ça sur un site 8))
print_r($ton_tableau);

Posté : 07 sept. 2006, 08:56
par Invité
Ok, je pensais qu'on pouvait après avoir incrémenter son tableau sortir la totale par un echo.

Donc si je pige bien :

- Un echo peut me permettre de sortir un élément, mais si je veux sortir la totale c'est par une boucle if ou while, c'est bien ça ?

En tout cas merci pour la réponse et l'astuce (connaissais pas :D)

kabukishido

Posté : 07 sept. 2006, 08:58
par Invité
et aussi j'oubliais (en plus du post ci-dessus) :

Pourquoi <?php plutôt que <? ???

kabukishido

Posté : 07 sept. 2006, 09:07
par charabia
Non le echo permet d'afficher une donnée tout simplement.

Là dans ton exemple, si tu veux afficher de 0 à 9, il faut que ton affichage se situe dans la boucle avant l'incrémentation pour que la boucle puisse repartir et afficher l'élément suivant ;)

Concernant le <? ou <?php : le <?php est plus souvent utilisé pour éviter de futurs soucis donc plus "correct" que <? même si ce dernier est encore pas mal utilisé.

Par exemple si tu utilises WAMP, <? te sortira un erreur (sauf si tu changes la config).

Posté : 07 sept. 2006, 09:42
par Invité
Ok et dans le cas où j'ai mal déclaré un tableau alphabet genre je suis un boulet ou un psychopathe :
$alphab=array("a","b","z","i","g"...);//dans le désordre mais les 26.
Comment appliquer une commande à tout un tableau exemple simple avec un sort($alphab) si l'echo ne me renvoie qu'une valeur..? Ca se passe dans la boucle ? J'avoue que j'ai du mal à me rendre compte :roll:

kabushido

Ps : merci pour le partage de ton savoir :wink:

Posté : 07 sept. 2006, 09:55
par charabia

Posté : 07 sept. 2006, 11:31
par Invité
Merci pour le lien, j'ai réussi à faire grossomodo ce que je voulais à une exception :

Quand je fais un tri sur un nom de fichier il me zappe l'enregistrement qui à l'indice 0 et me le colle à la fin. J'me suis dit que j'allais commencer mon tableau à 1 mais c'est pas possible puisque celui-ci s'incrémente dynamiquement, je ne le déclare pas avec un 1=>. Que faire ?

kabukishido

Posté : 07 sept. 2006, 11:47
par charabia
Un tit morceau de code ? :) J'ai un peu de mal à saisir les phrases aujourd'hui lol

Posté : 07 sept. 2006, 12:11
par Invité
Ok, désolé d'abuser de ta patience (encore merci)

Voici le truc, je suis persévérant et veux y arriver seul donc j'explique juste les résultats obtenu et escompté :

Le <?php print_r($mon_tableau); ?> me donne ceci :
Array ( [0] => AEA.txt [1] => ADA.txt [2] => ACA.txt [3] => ABA.txt [4] => AAA.txt [4] ) //c'est exactement ce que je veux

mais à l'affichage, avec un rsort, j'obtiens :
ADA.txt
ACA.txt
ABA.txt
AAA.txt
AEA.txt//pourquoi cet élément (fameux indice 0) n'est-il pas en première place :'(

kabukishido

Posté : 07 sept. 2006, 13:59
par charabia
Tu as dû louper quelque chose. A quoi correspond le [4] à la fin de ton affichage ? Tu devrais avoir [5] => ....txt

Posté : 07 sept. 2006, 14:00
par Number
Je me permet :

Parceque rsort sert a trier dans le sens inverse :

Code : Tout sélectionner

rsort() effectue un tri en ordre décroissant (du plus grand au plus petit) du tableau array

Posté : 07 sept. 2006, 14:19
par Invité
Un erreur dans la saisie de mon post ca fait en fait [0],[1],[2],[3],[4].

Dès que j'applique une commande à mon tableau, la p'tite astuce renvoie bien le résultat voulu mais mon echo dans la boucle ne m'affichage pas la même chose. L'élément ayant l'indice 0 est systématiquement en dernière position alors que le reste est bien trié :?

Posté : 07 sept. 2006, 14:34
par charabia
J'ai fait le code chez moi l'affichage est correct...

Code : Tout sélectionner

AEA.txt ADA.txt ACA.txt ABA.txt AAA.txt Array ( [0] => AEA.txt [1] => ADA.txt [2] => ACA.txt [3] => ABA.txt [4] => AAA.txt )