johanb
Messages postés33Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention19 mai 2006
-
11 janv. 2005 à 21:02
cs_GRenard
Messages postés1662Date d'inscriptionlundi 16 septembre 2002StatutMembreDernière intervention30 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
johanb
Messages postés33Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention19 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
johanb
Messages postés33Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention19 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)
Vous n’avez pas trouvé la réponse que vous recherchez ?
johanb
Messages postés33Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention19 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");
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
johanb
Messages postés33Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention19 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
cs_GRenard
Messages postés1662Date d'inscriptionlundi 16 septembre 2002StatutMembreDernière intervention30 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
johanb
Messages postés33Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention19 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