IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Tableaux] Un array dans un define


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 23
    Par défaut [Tableaux] Un array dans un define
    Hello,

    J'ai un petit problème très embêtant en ce moment. J'ai mon fichier de config (config.php) qui regroupe passablement de paramètres de configurations déclarés avec un define().

    Dans mon cas, je dois faire passer un array() dans une variable déclarée dans le fichier de config afin de le réutiliser dans toutes les autres pages du site.

    Ma structure de pages est index.php => include("page.php"). Si mon fichier de config contient ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    define('ITEM1', 'blabla');
    ${ITEM2} = array('5', '2');
    Sur ma page (page.php) si je fais un echo ITEM1; j'btiens "blabla". Par contre sur cette même page si je veux afficher un champ précis de l'array() en faisant :

    Rien ne s'affiche... Et c'est bien là mon problème car si en faisant un echo ${ITEM2}[0]; directement dans le ficheir de config (config.php), cela fonctionne parfaitement.

    Le problème est exactement le même en utilisant une simple variable ($item2 = array('5', '2')...

    Je n'y comprends vraiment plus rien...

    D'avance MERCI

  2. #2
    Membre Expert

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Par défaut
    Citation Envoyé par http://fr.php.net/manual/fr/language.constants.php#language.constants.syntax
    Seuls les types de données scalaires peuvent être placés dans une constante : c'est à dire les types booléen, entier, double et chaîne de caractères (soit bool, entier, double et string).
    http://fr.php.net/manual/fr/language...nstants.syntax

  3. #3
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 23
    Par défaut
    Et en plus, je l'avais lu...

    Par contre, ce que je ne comprend pas c'est pourquoi le code ci-dessous fonctionne dans la page même et pas sur une autre page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ${ITEM2} = array('5', '2');
     
    echo ${ITEM2}[0]; //devrait afficher 5
    Sinon, est-ce que quelqu'un a un moyen pour le faire autrement ?

    Ce que je comprends encore moins c'est pourquoi ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $item2 = array('5', '2');
     
    echo $item2[0];
    n'affiche rien dans ma page incluse... Je vous rassure, mon fichier de config est appelé sur la page index.php, ce qui ne devrait pas poser de problèmes...

  4. #4
    Membre éclairé
    Homme Profil pro
    Responsable d'une MOE bancaire
    Inscrit en
    Juillet 2003
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Responsable d'une MOE bancaire

    Informations forums :
    Inscription : Juillet 2003
    Messages : 261
    Par défaut
    dsl pour toi mais quand je declare
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    define('ITEM1', 'blabla');
    ${ITEM2} = array('5', '2');
    et je fais ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo ITEM1;
    echo ${ITEM2}[0];
    ca me donne bien
    blabla5
    du coup t'as un problème ailleur

  5. #5
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 23
    Par défaut
    C'est justement ça que je ne comprend pas...

    Si je fais un echo de mon array() dans le fichier config.php, ça marche.

    Par contre si je fais la même chose sur une autre page (page.php) où n'est pas déclaré le tableau mais simplement pour l'afficher, rien ne se passe, même pas une erreur...

    Chose étonnante, si sur ma page (page.php) je fais un echo ITEM1;, aucun problème à ce moment là...

    Ma déduction :

    Si je ne déclare pas le tableau en passant par un define mais simplement en rattribuant une nouvelle valeure, ca ne amrche pas.

    ma question donc, y a-t-il un moyen de créer un tableau directement dans un define ?

    Du genre (qui ne marche pas évidemment...) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    define('ITEM2', array('5', '2'));

  6. #6
    Membre émérite Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Par défaut
    Hello,

    Je me demande (si j'ai bien compris, mais parfois je suis un peu long), si tu n'aurais pas oublié tout simplement d'appeller le fichier de config dans l'entete de ta page...

    Dans page.php

    Plutot vers le haut (mais en gros avant de demander l'affichage des valeurs) essaie de mettre un truc genre :

    include config.php;

    (par contre je ne sais pas si je l'ai bien écris l'appel, il y a peut etre des parentheses)

    @+
    PS : Sinon c'est peut etre que ton tableau n'est pas déclaré en Global

  7. #7
    Membre Expert

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Par défaut
    Citation Envoyé par supersmoos
    ma question donc, y a-t-il un moyen de créer un tableau directement dans un define ?

    Du genre (qui ne marche pas évidemment...) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    define('ITEM2', array('5', '2'));
    Je vois 2 solutions :

    * Utiliser une variable au lieu d'une constante (en majuscule par exemple), il te suffira de ne la modifier nulle part. Tu peux aussi l'enregistrer dans $_GLOBALS[] pour qu'elle soit visible partout (directement ou avec global $VARIABLE ; )
    * Définir une chaine de caractere a la place d'un tableau et reconstruire ton tableau "en live" a chaque appel de la constante. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    define('TABLEAU', '5-2-3-4-1');
    ...
    echo '<pre>';
    var_dump(implode('-', TABLEAU));
    echo '</pre>';
    en faisant ca, par contre, tu perd le type des elements de ton tableau, tout sera convertit en string. Si tu veux conserver le type "integer", il te faut une fonction plus sioux genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function getArrayFromConstante($chaine) {
       $tab = implode('-', $chaine);
       return array_map('int_val', $tab);
    }
     
    define('TABLEAU', '5-2-3-4-1');
     
    ...
    echo '<pre>';
    var_dump(getArrayFromConstante(TABLEAU));
    echo '</pre>';

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Tableaux] copier tout un array dans une autre variable
    Par XavierWRC dans le forum Langage
    Réponses: 3
    Dernier message: 06/01/2010, 17h07
  2. [Tableaux] Renvoyer booleen dans array()
    Par Jiraiya42 dans le forum Langage
    Réponses: 2
    Dernier message: 25/01/2008, 21h07
  3. [Tableaux] Mettre un " dans un array()
    Par yazerty dans le forum Langage
    Réponses: 7
    Dernier message: 17/03/2007, 10h02
  4. [Tableaux] Argument de type array dans __construct ??
    Par shadeoner dans le forum Langage
    Réponses: 2
    Dernier message: 19/03/2006, 20h03
  5. [Tableaux] Variable de type array dans un formulaire
    Par ThAOTh dans le forum Langage
    Réponses: 3
    Dernier message: 14/03/2006, 17h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo