2017-05-30 2 views
0

J'ai une certaine gamme d'envergure mondiale permet de direPHP lire la position du tableau global

$t[0][1] = "a"; 

comment j'accéder à la position d'une fonction?

function fc(){ 
    echo /* $t[0][1]*/ 
} 

Je suis passé par quelques articles sur les variables globales, mais je ne l'ai pas trouvé une solution, chaque guide est pour une seule variable

essayé:

echo $GLOBALS['t[0][1]']; 
echo $GLOBALS['t'][0][1]; 
echo $GLOBALS['t']['0']['1']; 

ou essayé

$t[0][1] = "a"; 
function fc(){ 
    global $t 
    echo $t[0][1]; 
} 

et aucun travaillé .... Toute aide avec this?

Merci d'avance :)

+0

Utilisez-vous tout type de cadre? Aussi vous avez appelé la fonction, non?! – Rizier123

+0

passez-le comme paramètre – Akintunde007

+0

passez en paramètre: - https://stackoverflow.com/a/42393334/4248328 –

Répondre

2

Vous avez deux options, dont un a déjà été mentionné dans les commentaires par @Akintunde.

passe comme argument:

function fc($arr) { 
    print_r($arr); 
} 
fc($t); 

Si vous avez l'intention de le modifier, le passer, par référence:

function fc(&$arr) { 
    $arr[0] = 'test'; 
} 
fc($t); 
echo $t[0]; 

Vous avez déjà parlé de la méthode globale, ce qui risque de ne pas travailler en raison Pour connaître la portée, voir: http://php.net/manual/en/language.variables.scope.php. Mais je ne peux pas le souligner assez, l'utilisation de global et $GLOBALS devrait être évitée à tout prix, c'est une pratique de programmation terrible et vous causera beaucoup de maux de tête en bas de la piste.

Une autre méthode qui empêche vos variables de sortir de la portée de l'application externe est de tout mettre dans votre propre classe statique, ce qui empêchera la réutilisation accidentelle des variables.

class MyClass 
{ 
    private static $t = []; 

    public static function set($index, $value) 
    { 
    self::$t[$index] = $value; 
    } 

    public static function get($index) 
    { 
    return self::$t[$index]; 
    } 
} 

MyClass::set(0, 'test'); 
echo MyClass::get(0) . "\n"; 

Et si vous voulez vous assurer que votre classe ne heurte pas à une catégorie existante, il namespace: http://php.net/manual/en/language.namespaces.php

+0

copie de: -https: //stackoverflow.com/a/42393334/4248328 –

+0

Je ne suis pas un électeur du tout. Je viens de partager le lien –

+0

merci, cela a fait sa magie. utilisé et solution et fonctionne bien :) – Zorak