<?php
for ($i = 'a'; $i <= 'z'; $i++)
echo "$i\n";
이 스 니펫은 다음 출력을 제공합니다 (줄 바꾸기는 공백으로 바 space).
abcdefghijklmnopqrstu vwxyz aa ab ac ad ae a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a av aw ax ay az ba bb bc bd be bf bg bh bi bj bk bl bm bn bo bp bq br bs bt bu bv bw bx by bz ca cb cc cd ce cf cg ch ci cj ck cl cm cn co cp cq cr cs ct cu cv cw cx cy cz da db dc dd de df dg dh di dj dk dl dm dn dn do dp dq dr ds dt 뒤 dv dw dx dy dz ea eb ec ed ee ef 예
답변
로부터 문서 :
PHP는 C가 아닌 문자 변수에 대한 산술 연산을 처리 할 때 Perl의 규칙을 따릅니다.
예를 들어 Perl에서는
'Z'+1
으로'AA'
, C 에서는 ( , )'Z'+1
로 바뀝니다 .'['
ord('Z') == 90
ord('[') == 91
문자 변수는 증가 할 수 있지만 감소 할 수 없으며 일반 ASCII 문자 (az 및 AZ) 만 지원됩니다.
주석에서 :-
또한<=
사전 사전 비교라는점에 유의해야합니다'z'+1 ≤ 'z'
. (이후'z'+1 = 'aa' ≤ 'z'
그러나이.'za' ≤ 'z'
처음 인 비교는 false입니다.) 속보 때$i == 'z'
예를 들어, 작동합니다.
답변
일단 ‘z’에 도달하면 (그리고 이것이 범위 내에서 유효한 결과이고, $ i ++는 순서대로 다음 값으로 증가시킵니다), 다음 값은 ‘aa’입니다. 알파벳순으로 ‘aa’는 < ‘z’이므로 비교는 절대 이루어지지 않습니다.
for ($i = 'a'; $i != 'aa'; $i++)
echo "$i\n";
답변
다른 답변은 게시 된 코드의 관찰 된 동작을 설명합니다. 원하는 것을 수행하는 한 가지 방법이 있습니다 (그리고 더 깨끗한 코드, IMO).
foreach (range('a', 'z') as $i)
echo "$i\n";
범위 함수 에 대한 ShreevatsaR의 의견 / 질문에 대한 응답으로 : “올바른 종점”을 생성합니다. 즉 함수에 전달 된 값이 범위에 있습니다. 위 코드의 결과는 다음과 같습니다.
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
답변
다른 사람들은 PHP가 왜 당신이 기대하는 것을 보여주지 않는지 이미 말했습니다. 원하는 결과를 얻는 방법은 다음과 같습니다.
<?php
for ($i = ord('a'); $i <= ord('z'); $i++)
echo chr($i);
?>
답변
왜 사용하지 range('a','z')
않습니까?
답변
이 코드를 사용해보십시오. 이 코드가 도움이 될 것입니다.
$alphas = range('A', 'Z');
foreach($alphas as $value){
echo $value."<br>";
}
26 개의 문자를 순서대로 표시합니다.
답변
<?php
$i = 'a';
do {
echo ($j=$i++),"\r\n";
} while (ord($j) < ord($i));
?>