PHP의 문자열 증분 연산 분석에 대한 자세한 설명
Jul 04, 2017 pm 03:01 PM문자 변수에 대한 산술 연산을 처리할 때 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

인기 기사

인기 기사

뜨거운 기사 태그

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Ubuntu 및 Debian용 PHP 8.4 설치 및 업그레이드 가이드

PHP 개발을 위해 Visual Studio Code(VS Code)를 설정하는 방법
