web-dev-qa-db-fra.com

PHP Opérateur ternaire raccourci "?:" Erreur d'analyse inattendue ":"

Je viens de télécharger d'anciens fichiers PHP sur un nouveau serveur et je reçois des erreurs d'analyse (':' inattendu) sur les opérations ternaires abrégées. Par exemple:

$y = $x ?: "Some default";

la version php est 5.2.16 Le code est jonché de ces raccourcis?:, donc avant de les changer, je pensais voir si quelqu'un en savait quelque chose car je n'ai pas utilisé PHP for un moment maintenant.

31
Paul Kersey

Ceci n'est disponible que depuis PHP 5.3

L'expression (expr1)? (expr2): (expr3) est évalué à expr2 si expr1 est évalué à [~ # ~] vrai [~ # ~] , et expr3 si expr1 est évalué à [~ # ~] false [~ # ~] .

Depuis PHP 5.3, il est possible de laisser de côté la partie centrale de l'opérateur ternaire. Expression expr1?: Expr3 renvoie expr1 si expr1 est évalué à [~ # ~] true [~ # ~] , et expr3 sinon.1

Voir cet exemple pour plus de contexte.

ou plus utile mais notez dans les commentaires: http://www.php.net/manual/en/control-structures.if.php#10206


1http://php.net/manual/en/language.operators.comparison.php

60
azat