Ce comportement est-il correct dans php? Je comprends que moins est concaténé au premier "1" et "-1" casted en entier, et non "2 'à la chaîne . P> S'il vous plaît expliquer pourquoi. p> Quelle est la meilleure façon de le résoudre?
Celui-ci? P>
5 Réponses :
Tout d'abord, il est correct et s'il serait différent, il serait également correct, c'est ainsi que les développeurs PHP ont défini l'opérande selon la précédente.
Dans ce scénario, aucun opérande n'a de priorité, vous le lisez à droite p>
'-'. 1 ==> '-1' code> li>
-
'- 1' + 1 ==> 0 code> (les opérations arithmétiques sur les chaînes, essaieront de les jeter d'abord aux numéros, puis font les arithmétiques). Li>
-
0. 'Crazy Cats' ==> "0 Crazy Cats" Code> (Opérations Strings sur les chiffres, les jettera aux chaînes). Li>
ol>
Argh, tu étais plus vite que moi :) BTW, la priorité de l'opérateur est disponible ATHTTP: //php.net/manual/fr/language.operators.pecedence.php.
Votre verbiage est éteint. Le php traitera toujours Ce qui précède est similaire à dire: p> '-' code> n'est pas casé mais concédé.
(string) 1 code> et
-1 code> comme un entier. p>
. code> et
+/- code> a la même précalence dans PHP, la chaîne peut donc être lue de gauche à droite. P>
Si vous voulez -2 Crazy Cats, vous pouvez définir la priorité manipulée avec des parenthèses:
Vous pourriez donc faire echo code> suit également la construction de
echo 'foo', "bar" code> qui sépare les éléments dans des déclarations distinctes à Echo. Vous n'avez pas à vous soucier de l'ordre de concaténation dans ce cas. p>
php Echo '-', (1 + 1), "Crazy Cats"; ?> code> et vos chats ne se soucieraient pas des négatifs! p>
Si vous préférez, cela évite la préséance:
printf('-%d crazy cats',1+1);
émerveillé ce n'est pas une dupe .. donc +1