>  기사  >  백엔드 개발  >  PHP의 문자열 증분 연산 분석에 대한 자세한 설명

PHP의 문자열 증분 연산 분석에 대한 자세한 설명

怪我咯
怪我咯원래의
2017-07-04 15:01:381353검색

문자 변수에 대한 산술 연산을 처리할 때 PHP는 C 대신 Perl의 습관을 따릅니다.

학생이 질문했습니다.

코드 복사 코드는 다음과 같습니다.

<?php 
for($i = &#39;A&#39;; $i <= &#39;Z&#39;; $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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.