Tableau (array) avec une portée globale ?

Bonjour,

J'ai un petit problème avec mon tableau (array).

Voilà un peu comment se présente mon code :

<?php
$tableau = array("1"=>"Valeur 1", 2=>"Valeur 2");

function ma_fonction() {
   print_r($tableau);
}


Seulement voilà, impossible de réutiliser le tableau nommé '$tableau' dans ma fonction et celà même si je déclare $tableau en global dans ma fonction...
Le problème est que je ne peux pas passer $tableau en paramètre dans ma fonction (j'utilise WinBinder pour ceux qui connaissent).

Quelqu'un a une idée ?
Merci d'avance
Configuration: Windows XP
Firefox 2.0.0.12

3 réponses

  1. Si tu veux une solution sans passer le tableau en paramètre :
    <?php
    $tableau = array("1"=>"Valeur 1", 2=>"Valeur 2");

    function ma_fonction() {
    global $tableau;
    print_r($tableau);
    }
    1. Bonjour,

      j'ai eu le même soucis, il suffit de passer ton tableau en argument.
      En fait quand tu appelles ta fonction tu mets le tableau dedans

      <?php
      $tableau = array("1"=>"Valeur 1", 2=>"Valeur 2");

      ma_fonction($tableau);

      function ma_fonction($tableau) {
      print_r($tableau);
      }

      ?>

      si tu veux seulement le lire ca marchera
      mais si tu veux le modifier dans ta fonction
      il faut rajouter un "&" dans la déclaration de ta fonction

      function ma_fonction(&$tableau) {
      ...
      1. Le problème est que je ne peux pas passer $tableau en paramètre dans ma fonction (j'utilise WinBinder pour ceux qui connaissent).

        faut lire avant de répondre
      2. mercie pour le coup de main
    2. Pas de réponse depuis le temps. Normal vu le ton, faut réfléchir avant d'agresser
      ceux qui s'intéressent à ton problème.
      Voila une solution si ça peut servir à d'autres...

      <?php
      function TableauGlobal(){
      $tableau = array();
      global $tableau;
      for($ct=0; $ct<10; $ct++){
      $tableau[]=$ct;
      }
      }
      TableauGlobal();
      echo '<pre>';print_r($tableau);echo '</pre>';
      ?>