web-dev-qa-db-fra.com

Appeler PHP exploser et accéder au premier élément?

Duplicata possible:
syntaxe PHP pour le résultat de la fonction de déréférencement

J'ai une chaîne qui ressemble à 1234 # 5678. Maintenant j'appelle ceci:

$last = explode("#", "1234#5678")[1]

Cela ne fonctionne pas, il y a une erreur de syntaxe ... mais où? Ce que j'attends est 5678 en $last. Cela ne fonctionne-t-il pas en PHP?

25
EOB

Le déréférencement de tableau n'est pas possible dans les versions actuelles de PHP (malheureusement). Mais vous pouvez utiliser list[docs] pour affecter directement les éléments du tableau aux variables:

list($first, $last) = explode("#", "1234#5678");

[~ # ~] mise à jour [~ # ~]

Depuis PHP 5.4 (publié le 1er mars 2012), il prend en charge déréférencement de tablea .

33
Felix Kling

Très probablement PHP devient confus par la syntaxe. Attribuez simplement le résultat de explode à une variable de tableau, puis utilisez l'index dessus:

$arr = explode("#", "1234#5678");
$last = $arr[1];
13
Aleks G

Voici comment le ramener à une seule ligne:

$last = current(array_slice(explode("#", "1234#5678"), indx,1));

indx est l'index que vous voulez dans le tableau, dans votre exemple, il était 1.

7
ragamufin

Vous ne pouvez pas faire ça:

explode("#", "1234#5678")[1]

Parce que explode est une fonction, pas un tableau. Il retourne un tableau, bien sûr, mais dans PHP vous ne pouvez pas traiter la fonction comme un tableau jusqu'à ce qu'elle soit définie dans un tableau.

Voici comment faire:

 $last = explode('#', '1234#5678');
 $last = $last[1];
5
Alasdair

PHP peut être un peu sombre. Vous devrez probablement le faire sur deux lignes:

$a = explode("#", "1234#5678");
$last = $a[1];
3
Rob Agar