Petites questions de débutant sur les tableaux

johanb Messages postés 33 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 19 mai 2006 - 11 janv. 2005 à 21:02
cs_GRenard Messages postés 1662 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 30 juillet 2008 - 12 janv. 2005 à 06:25
bonjour à tous, alors voilà je me lance juste dans le PHP, et j'aimerais poser quelques questions a propos des tableaux.je possède les bases en c/c++ et java, mais j'ai un peu de mal à me faire à PHP.En fait j'ai créé une page avec des script en javascript, et j'aimerais le transcrire en php.Je sais bien que javascript est très permissif, donc j'ai quelques problêmes en passant au php.donc voici mes questions:

-je souhaiterais créer un tableau vide (d'une longueur spécifiée car jimagne que ce n'est pas possible de créer un tableau de longueur non déterminée)
-le remplir. seulement, je ne sais pas si c'est possible et je ne parvient pas à trouver une fonction retournant la longueur du tableau.

voici en gros ce que donnait le code en javascript:
for(var j=1;j<=1000;j++){
var tab=new array();
tab[tab.length]="valeur"+tab.length //tab contiendrais {"valeur1","valeur","valeur3",...}
//à l'ajout, tab.length est incrémenté automatiquement,
//donc lors du repassage dans la boucle on continue ainsi de suite
}

et voici ce que donnerai le php avec quelques modifications:
$i=0;
$tab=array[TAILLE]; //la je voudrais savoir comment créer un tableau de taille spécifique
for($i=0;$i<=$tab.length;$i=$i+1){
//insertion:
$tab[i]="valeur".$i; //i est un compteur incrémenté à chaque insertion
}

j'aimerais donc avoir votre avis concernanrt ceci, en me signalant d'être plus clair sur ceetains point si je n'ai pas su me faire comprendre

en vous remerciant

10 réponses

johanb Messages postés 33 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 19 mai 2006
11 janv. 2005 à 21:09
oui, je voulais préciser qu'il s'agissait juste d'exemples, car mon cas ets un peu plus délicat:
j'ai ue classe toolbar,menu et sousmenu

class toolbar{
var $toolbar;
function toolbar(){
//constructeur
$toolbar= new array();
}
function addMenu($label){
$this->toolbar[indice] =new menu("menu_".$toolbar_length."p",$label)
}
}

naturellement, indice indiquerai l'indice dans le tableau, cad la "premiere case libre"
et la taille du tableau est necessair par la suite pour l'affichage de tous les éléments
0
cs_GRenard Messages postés 1662 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 30 juillet 2008
11 janv. 2005 à 21:22
Oh, php est très gentil :)

tu create un tableau comme tu las mentionné dans ton 2e message sans new :

$toolbar = array();

Pour ajouter des chosesd ans $toolbar tu fais $toolbar[] = "something";

Ton for fonctionne sauf qu'il manque un $ devant ton i dans les crochets.



Pour ce qui est de la classe, tu l'a a moitié... c'est pas $toolbar new array() c'est $this->toolbar array();



(le this est pour mentionné que la variable se trouve dans la classe... comme dans ta fonction addMenu



Longueur de $toolbar, c'est count($this->toolbar);

Va vraiment lire la documentation de PHP à la base... car je pense que tu veux sauter trop vite à la compréhension de php !



Bonne chance.






PHP Guru
Écoutez les conseils d'un vieux sage ! Ils sont souvent très utiles.
http://www.lookstrike.com
0
cs_GRenard Messages postés 1662 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 30 juillet 2008
11 janv. 2005 à 21:23
N'oublie pas que PHP s'exécute coté serveur ! par opposition au JavaScript qui s'exécute coté client !

PHP Guru
Écoutez les conseils d'un vieux sage ! Ils sont souvent très utiles.
http://www.lookstrike.com
0
johanb Messages postés 33 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 19 mai 2006
11 janv. 2005 à 21:48
merci pour tout.

execution coté serveur: ouioui, t'inkète je sais bien ça.je suis en 2eme année de dut info, mais c que j'ai un peu de mal avec la syntaxe.la j'ai juste marqué ça vite fait, mais c correct dans mon vrai code

la doc php je voudrais bien la lire, mais je veux pas y passer des années.Tout le reste je l'ai, j'ai la méthode, il me manque juste le nom des fonctions (la syntaxe ça peut aller, ça ressemble au c)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
johanb Messages postés 33 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 19 mai 2006
11 janv. 2005 à 23:07
j'ai un autre problême:j'ai défini mes classes dans un fichier classes.php et mon code dans un fichier toolbar.php:

classes.php
<?php


//creation du menu (toolbar)
class toolbar
{
var $toolbar;
function toolbar(){
//constructeur
$this->toolbar=array();
}
function addMenu($label,$txtcolor,$bgcolor,$lien)
{
$this->toolbar[]=new menu("menu_".count($this->toolbar),$label,$txtcolor,$bgcolor,$lien);
}
}
class menu
{
var $id; //identifiant
var $label; //etiquette
var $txt_color; //couleur de texte
var $bg_color; //couleur de fond
var $lien; //lien
var $tab_sousMenu; //tableau des sous menus


function menu($id,$label,$color,$bgcolor,$lien)
{
//constructeur
$this->id=$id;
$this->label=$label;
$this->txtcolor=$color;
$this->bgcolor=$bgcolor;
$this->lien=$lien;
$this->tab_sousMenu=array();


}
function addSubMenu($label,$lien)
{
//méthode
$this->tab_sousMenu[]=new sousMenu($this->id."_"+count($this->tab_sousMenu),$label,$lien);



}
}


class subMenu
{
function subMenu($id,$label,$lien){
$this->id=$id; //id sousmenu
$this->label=$lebel; //label
$this->lien=$lien; //lien
}
}
?>

toolbar.php
<html>
<head>
</head>

<?php
include("classes.php");
$tb=new toolbar();
//création des menus principaux et sous menu:
$tb[0]->addMenu("menu1","black","#7E71B4","url_main"); //erreur repérée
$tb[0]->addSubMenu("submenu1_1","test");
$tb[0]->addSubMenu("submenu1_2","test");
$tb[0]->addSubMenu("submenu1_3","test");
$tb[0]->addSubMenu("submenu1_4","test");


$tb->addMenu("menu4","blue","#0061B3","tois_com");
$tb[1]->addSubMenu("submenu2_1","test2");
$tb[1]->addSubMenu("submenu2_2","test2");

//.......
?>

</html>

une erreur est donc signalée:
Fatal error: Cannot use object of type toolbar as array in c:\wamp\www\toolbar.php on line 10

de quoi ça vient et comment faire?
en fait je voudrais accéder au premier menu créé (indice 0 dans le tableau) pour lui ajouter un objet de type sousmenu (grace à sa méthode addSubMenu) et ainsi de suite.je vois pas comment y accéder autrement
0
johanb Messages postés 33 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 19 mai 2006
11 janv. 2005 à 23:10
l'erreur est à la ligne suivante: $tb[0]->addSubMenu("submenu1_1","test");
le commentaire est placé juste avant, pour pas porter à confusion

ps (à propos du forum): il n'y a pas moyen d'éditer nos messages? parceque quand on se rend compte qu'on a fait une erreur d'écriture, on ne peut rien modefier et on doit mettre un second message pour indiquer l'erreur
0
cs_GRenard Messages postés 1662 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 30 juillet 2008
11 janv. 2005 à 23:20
Non on ne peut pas modifier...

L'erreur est que tu veux accèder à une variable ($tb[0]) qui n'est pas
définie... car $tb[0] signifie que tu regarde dans le tableau $tb, mais
$tb n'est pas définie en tant que tableau... il faudrait faire $tb =
array();

$tb[0] = new ...


(De plus, la surcharge d'opérateur n'existe pas en PHP !)

PHP Guru
Écoutez les conseils d'un vieux sage ! Ils sont souvent très utiles.
http://www.lookstrike.com
0
johanb Messages postés 33 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 19 mai 2006
11 janv. 2005 à 23:27
je pense avoir trouvé.
en faisant $tb->toolbar[0]=new... semble marcher (enfin, auune erreur n'est indiquée)
ça me fesait bizarre car on m'a toujour appris à conserver les attributs de classe en priver et à ne pas faire d'accès direct.
ben tant pis, je ferai comme ça puisque jene vois pas vraiment comment faire autrement
encore merci GRenard
0
cs_GRenard Messages postés 1662 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 30 juillet 2008
12 janv. 2005 à 06:24
bah... tas raison... laisse le privé... mais fait une méthode publique qui permet d'ajouter un new...

et pour l'obtenir , tu fais une méthode publique encore :) tout en laissant ton object privé

PHP Guru
Écoutez les conseils d'un vieux sage ! Ils sont souvent très utiles.
http://www.lookstrike.com
0
cs_GRenard Messages postés 1662 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 30 juillet 2008
12 janv. 2005 à 06:25
pour jouer avec public et private (et protected) tu peux avec php5, tu peux aller lire ca sur le php.net manual ! @±

PHP Guru
Écoutez les conseils d'un vieux sage ! Ils sont souvent très utiles.
http://www.lookstrike.com
0
Rejoignez-nous