2011-03-28 6 views
1

J'essaie de comprendre le tableau PHP en ce moment. Quelle est la différence entre

$ _SESSION ['var'] et $ _SESSION [$ var]?

Et comment et quand pouvons-nous accéder à une variable comme celle-ci - $ _SESSION [$ var] [1]?

Merci! : D

Répondre

5

Si vous utilisez $ var comme un index de tableau, la valeur de $ var sera utilisé comme indice:

$var = "foo"; 

$_SESSION['foo'] = "bar"; 
$_SESSION['var'] = "variable"; 

echo $_SESSION['var']; // This will echo "variable" 
echo $_SESSION[$var]; // This will echo "bar" 

Quant à votre deuxième exemple, en $ _SESSION [$ var] [1 ] la chaîne contenue dans $ _SESSION [$ var] sera accessible comme un tableau de lettres, renvoyant le caractère dans l'index 1 - la deuxième lettre.

0

Dans le premier, 'var' est la "clé" du tableau $ _SESSION. Dans ce dernier, la variable $ var contient une valeur qui est la "clé" du tableau $ _SESSION.

0

Avec $_SESSION['var'] vous spécifiez la valeur avec la clé var; avec $_SESSION[$var] vous spécifiez la valeur avec la clé avec la valeur de$var:

$arr = array('var' => 1, 'foo' => 2); 
$var = 'foo'; 
var_dump($arr['var']); // int(1) 
var_dump($arr[$var]); // int(2) 

Et avant que la question se pose: $arr["$var"] équivaut à $arr[$var] (ici $var est converti en chaîne interne). Et bien que $arr[var] soit traité de manière équivalente comme $var['var'], vous ne devriez pas utiliser le premier. Voir aussi Array dos and don’ts.

0

$ var est une variable 'var' est une chaîne. Si vous dites

$_SESSION['my_string'] = 1; 

ce serait la même chose que

$anything = 'my_string'; 
$_SESSION[$anything] = 1; 

parce que tout est $ 'my_string'. Dans cet exemple:

$_SESSION['test'] = 'test output'; 
$demo = 'demo'; 
$_SESSION[$demo] = 'demo output'; 

echo $_SESSION['test']; // outputs "test output" 

echo $_SESSION['demo']; // outputs "demo output" and is the same as: 
echo $_SESSION[$demo]; // outputs "demo output". 

vous pouvez voir comment cela fonctionne.

0

sur la deuxième question, il n'y a pas de problème pour y accéder, tout comme vous avez dit:

$ _SESSION [premier $] [$ seconde].

sur la première réponse, voir Kaivosukeltaja, il a donné une excellente réponse

Questions connexes