Lorsqu'il s'agit d'opérations arithmétiques sur des variables de caractères , PHP suit les habitudes de Perl au lieu de C.
Un élève a posé une question :
Copiez le code Le code est le suivant :
<?php for($i = 'A'; $i <= 'Z'; $i++) { echo $i; }
Quel est le résultat ?
Le résultat est :
ABCDEFGHIJKLMNOPQRSTUVWXYZAAABACADAEAFAGAHAIAJAKALAMANAOAPAQARAS…….
Pourquoi
C'est en fait très simple, et il y a des instructions dans le manuel PHP, mais je J'ai peur que beaucoup de gens ne connaissent pas un chapitre. Lisez attentivement le manuel section par section :
PHP suit la convention de Perl lorsqu'il s'agit d'opérations arithmétiques sur des variables de caractères et non sur des C. Par exemple, en Perl 'Z'. +1 se transforme en 'AA', tandis que en C 'Z'+1 se transforme en '[' ( ord('Z') == 90, ord('[') == 91 ). que les variables de caractères peuvent être incrémentées mais pas décrémentées et même ainsi, seuls les caractères ASCII simples (a-z et A-Z) sont pris en charge
Lorsqu'il s'agit d'opérations arithmétiques sur des variables de caractères, PHP suit les habitudes de Perl au lieu de celles de C. Par exemple, en Perl, 'Z'+1 obtiendra 'AA', tandis qu'en C, 'Z'+1 obtiendra '[' (ord('Z') == 90, ord('[') == 91 ). Notez que les variables de caractères ne peuvent être qu'incrémentées, pas décrémentées, et que seules les lettres pures (a-z et A-Z) sont prises en charge.
C'est-à-dire si :
le code est le suivant :
$name = "laruence"; ++$name; //将会是"laruencf"
et :
le code est le suit :
$name = "laruence"; --$name; //没有影响, 还是"laruence"
Donc, la raison de ce problème est que lorsque $i = Z, ++$i devient AA, et pour la comparaison de chaînes,
AA, BB , XX sont toujours à YZ et sont tous inférieurs ou égaux à Z... donc..
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!