문자 변수에 대한 산술 연산을 처리할 때 PHP는 C 대신 Perl의 습관을 따릅니다.
학생이 질문했습니다.
코드 복사 코드는 다음과 같습니다.
<?php for($i = 'A'; $i <= 'Z'; $i++) { echo $i; }
출력은 무엇입니까?
출력은 다음과 같습니다.
ABCDEFGHIJKLMNOPQRSTUVWXYZAAABACADAEAFAGAHAIAJAKALAMANAPAQARAS…
왜?
사실은? 매우 간단합니다. PHP 매뉴얼에는 지침이 있지만 많은 사람들이 매뉴얼을 장별로 주의 깊게 읽지 않을 것 같습니다.
PHP는 C가 아닌 문자 변수에 대한 산술 연산을 다룰 때 Perl의 규칙을 따릅니다. Perl에서는 'Z'+ 1이 'AA'로 바뀌고, 반면 C에서는 'Z'+1이 '[' ( ord('Z') == 90, ord('[') == 91 )로 바뀝니다. 문자 변수는 증가할 수 있지만 감소할 수는 없으며 일반 ASCII 문자(a-z 및 A-Z)만 지원됩니다.
문자 변수에 대한 산술 연산을 처리할 때 PHP는 C 대신 Perl의 습관을 따릅니다. 예를 들어, Perl에서 'Z'+1은 'AA'를 얻고 C에서는 'Z'+1은 '[' (ord('Z') == 90, ord('[') == 91을 얻습니다. ). 문자 변수는 증가만 가능하고 감소는 불가능하며 순수 문자(a-z 및 A-Z)만 지원됩니다.
즉, if:
코드는 다음과 같습니다.
$name = "laruence"; ++$name; //将会是"laruencf"
And:
코드는 다음과 같습니다.
$name = "laruence"; --$name; //没有影响, 还是"laruence"
그래서 이 문제가 발생하는 이유는 $i = Z, + +$i 는 AA 가 되고, 문자열 비교,
AA, BB, XX 대 YZ는 모두 Z보다 작거나 같습니다... 그래서..
위 내용은 PHP의 문자열 증분 연산 분석에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!