2010-04-29 9 views
1

J'écrivais une boucle foreach en PHP5. Voici le script:function(). Function() VS function() function()

foreach(range('A','Z') as $char) // line 1 
{ // line 2 
echo strtoupper($char)strtolower($char); // line 3 
} // line 4 

Et je reçu ce message d'erreur Parse error: parse error, T_STRING inattendue testing.php sur la ligne 3

J'ai passé près d'une heure pour comprendre que je devrais ajouter un point entre deux fonctions comme ceci:

echo strtoupper($char).strtolower($char); 

donc je ne peux pas faire la différence entre ces deux lignes de codes:

echo strtoupper($char).strtolower($char); 
echo strtoupper($char)strtolower($char); 

Répondre

13

Le '.' est un opérateur de concaténation. Il renvoie la concaténation de ses arguments droit et gauche.

Par exemple:

'Hello ' . 'world!' 

donne:

'Hello world!' 

Avoir deux fonctions à côté de l'autre sans opérateur est une erreur.

4

PHP La grammaire s'attend à ce que les arguments de echo soient un expression ou un ensemble de expressions séparés par une virgule.

Maintenant, strtoupper($char) est une expression complète en elle-même. Après cette expression PHP s'attend à voir un séparateur d'expression qui pourrait être un comma, dot ou même un semi-colon mais quand il trouve un string (strtolower) il se plaint.

Alors

strtoupper($char)strtolower($char); 

est pas une expression valide, mais ceux-ci sont:

strtoupper($char),strtolower($char); 
strtoupper($char).strtolower($char); 
strtoupper($char);strtolower($char); 

Mais dans votre cas, le dernier ne fait pas serveur dans le but car il imprime uniquement les 26 lettres en majuscules et en fait pas imprimer les minuscules.