2010-03-10 16 views
1
//In PHP, 
$a ? $b : echo $c //does not work but 
$a ? $b : print $c //works 

Y at-il une raison à cela?

BTW, est not un mot clé en PHP?

+11

Oh, oui. L'exception toujours célèbre "Ne fonctionne pas". – Kobi

Répondre

-1

valeur de retour. si vous avez écrit

$x = $a?$b:echo $c; 

quelle valeur serait $ x obtenir le $ un être faux?

L'impression retourne toujours 1. echo ne renvoie rien.

+0

Mais je n'ai pas la partie '$ x ='. Aussi, j'ai essayé une fonction qui n'a pas de valeur de retour, fonctionne toujours. – user198729

+0

Les fonctions PHP qui ne renvoient pas explicitement une valeur seront 'void', c'est-à-dire qu'elles renverront 'null'. l'écho, n'étant pas une fonction mais une construction de langage, ne renvoie même pas cela. Quant au manque de $ x = ..., PHP est un interprète. Il calcule d'abord la valeur de l'expression?: Et décide ensuite de la rejeter ou de la passer. –

+0

Est-ce que quiconque a modulé ma réponse pourrait expliquer ce qui ne va pas? –

1

echo n'a pas de valeur de retour, print fait!

void echo (string $arg1 [, string $... ]) 

int print (string $arg ) 

de php.net

Ce point est important dans ce cas puisque l'opérateur ternaire attend expressions

(expr1) ? (expr2) : (expr3) 

echo "something" ne peuvent pas être classés comme une expression.

not n'est pas un PHP keyword.

+0

Voir mon commentaire sous @SF – user198729

+2

-1 Ce n'est pas la raison! –

0

il n'y a aucun mot-clé not en PHP

2

echon'est pas une fonction, il est construit de la langue. Il ne retourne rien. Une autre void fonctions toujours "retour" NULL. C'est pourquoi le compilateur renvoie l'erreur unexpected T_ECHO.

printf, cependant, est une fonction et renvoie toujours 1.

Par exemple cela fonctionne:

function echo2($e) 
{ 
    echo($e); 
} 

$a ? $b : echo2('foo'); 
+2

En fait, print est aussi une construction de langage, mais il se comporte comme une fonction. –

+1

@stereofrog: http://tinyurl.com/yhd5pw6 – Jacco

+0

http://tinyurl.com/ydswsxt – user187291

0

Est-ce parce écho est une construction linguistique et l'impression est une fonction?