Que signifie [] en lisant à partir d'un tableau PHP?

j'ai écrit un analyseur pour PHP et tout en jouant avec un code tiers, je tombe sur un cas bizarre concernant l'opérateur [] .

normalement, [] est utilisé sans clé sur le côté gauche d'une affectation signifiant"ajouter comme dernier élément".

$a = array();
$a[] = 1;

ajoutera 1 à la fin du tableau $A.

dans le code ci-dessus, j'ai vu une ligne comme celle-ci:

$r =& $a[];

quand j'ai essayé d'enlever le&, j'ai eu une erreur fatale plutôt attendue:

erreur Fatale: Impossible d'utiliser [] pour la lecture

avec le & cependant, PHP ne se plaint pas du tout. Quelle est la signification de l'expression

& $a[];

?

6
php
demandé sur Peter Mortensen 2010-10-11 21:34:11

2 réponses

la syntaxe signifie" utiliser une référence à $A [] " ou une référence à l'élément de tableau le plus récent créé.

<?php
$a=array( );
$a[] = "a";
$a[] = "b";

print_r($a);

$r =& $a[];

print_r($a);

$r = "c";

print_r($a);

produit:

Array
(
    [0] => a
    [1] => b
)
Array
(
    [0] => a
    [1] => b
    [2] => 
)
Array
(
    [0] => a
    [1] => b
    [2] => c
)
12
répondu 2010-10-11 17:41:41

à mon avis, Il ajoute un élément vide au tableau et donne à $r une référence à cet élément du tableau. Êtes-vous sûr que $a est censé être un tableau? Il pourrait aussi essayer d'accéder à un caractère d'une chaîne en utilisant la syntaxe [], auquel cas je n'ai aucune idée de comment cela pourrait fonctionner.

1
répondu bobdiaes 2010-10-11 17:41:54