6
votes

PHP Concaténation Présence

Ce comportement est-il correct dans php? XXX

Je comprends que moins est concaténé au premier "1" et "-1" casted en entier, et non "2 'à la chaîne .

S'il vous plaît expliquer pourquoi.

Quelle est la meilleure façon de le résoudre? Celui-ci? xxx


1 commentaires

émerveillé ce n'est pas une dupe .. donc +1


5 Réponses :


6
votes

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

  1. '-'. 1 ==> '-1'
  2. '- 1' + 1 ==> 0 (les opérations arithmétiques sur les chaînes, essaieront de les jeter d'abord aux numéros, puis font les arithmétiques).
  3. 0. 'Crazy Cats' ==> "0 Crazy Cats" (Opérations Strings sur les chiffres, les jettera aux chaînes).

1 commentaires

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.



1
votes

Votre verbiage est éteint. Le '-' n'est pas casé mais concédé.

php traitera toujours (string) 1 et -1 comme un entier.

. et +/- a la même précalence dans PHP, la chaîne peut donc être lue de gauche à droite.

Ce qui précède est similaire à dire: xxx


0 commentaires

4
votes

Si vous voulez -2 Crazy Cats, vous pouvez définir la priorité manipulée avec des parenthèses: xxx


0 commentaires

3
votes

echo suit également la construction de echo 'foo', "bar" 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.

Vous pourriez donc faire et vos chats ne se soucieraient pas des négatifs!


0 commentaires

1
votes

Si vous préférez, cela évite la préséance:

printf('-%d crazy cats',1+1);


0 commentaires