2010-03-07 3 views
3

Pourquoi prend en charge PHP pas cette syntaxe:Parse error sur explode ('-', 'foo bar') [0] (par exemple)

$s = explode('-', 'foo-bar')[0]; 

?

+1

[tableau déréférencement est maintenant dans le coffre] (http://schlueters.de/blog/archives/138-Features-in-PHP-trunk-Array-dereferencing.html) – Gordon

+0

double possible de [Comment évitez les variables temporaires dans PHP lorsque vous utilisez un tableau renvoyé par une fonction] (http://stackoverflow.com/questions/1769020/how-to-avoid-temporary-variables-in-php-when-using-an-array-returned -from-a-func) – Gordon

Répondre

7

C'est une limitation dans l'analyseur PHP. Il n'y a aucune raison pour laquelle il ne peut pas supporter cette forme de réduction, ce n'est tout simplement pas le cas.

0

La syntaxe ‘foo-bar’)[0] est erronée en ce qui concerne php. Je ne sais pas dans quelle langue vous avez vu une telle chose, mais PHP n'a pas d'implémentation pour une telle syntaxe. Cependant, vous pouvez diviser votre chaîne comme ceci:

explode(‘-’, ‘foo-bar’); 
+0

@Ignacio Vazquez-Abrams: merci pour le partage que :) – Sarfraz

+0

Cela fonctionne en langage C – lost3den

5

Vous pouvez l'écrire en utilisant list:

list($first_value) = explode(‘-’,‘foo-bar’); 
+0

Oui, bien sûr, mais je me demandais juste pourquoi cela ne fonctionne pas dans le cas de php – lost3den

0

Au lieu de cela, vous pouvez utiliser cette option si you'r la force à utiliser en ligne: substr ($ var , 0, strrpos ($ var, '-')); Mais je préfère la solution liste, c'est plus élégant!


Questions connexes