Home >php教程 >PHP源码 >Explanation of strange phenomena in PHP character variables

Explanation of strange phenomena in PHP character variables

WBOY
WBOYOriginal
2016-07-06 13:34:211505browse

Sometimes PHP character variables are not executed according to our ideas when used. Regarding this problem, the editor will compile a tutorial for you. Let’s look at the explanation of the strange phenomenon of PHP character variables, as follows.

First of all, the magical PHP supports character data types. Some students wrote this piece of code:


for ($c = 'a'; $c <= 'z'; $c ) {
echo $c . ' ';

}


However, the result was not what he wanted from a to z
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 aa ab ac ad ae af ag ah ai
aj ak al am an ao ap aq ar as at au 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 do dp dq dr ds dt du dv dw dx dy dz ea eb ec ed ee

ef eg eh ei ej ek el em en eo ep eq er es et eu ev ew ex... on to yz


There are many ways to print from a to z, such as the following
for ($i = 'a'; $i != 'aa'; $i )
echo $i . ' ';


for ($i = ord('a'); $i <= ord('z'); $i )
echo chr($i) . ' ';

echo implode(' ', range('a', 'z'));


But we still have to explain what the hell is that bunch printed above?
This is because PHP follows Perl's usage rather than C's when dealing with arithmetic operations on single character variables.
In Perl
$a = 'Z';

$a; //'AA'


In C
a = 'Z';

a ; //'[' Because the ASCII value of 'Z' is 90, the ASCII value of '[' is 91


Note that character variables can only be incremented, not decremented, and only support pure letters (a-z and A-Z), as shown below:
$a="9F9";
$b="9F9";
var_dump( $a); //"9G0"

var_dump(--$b); //"9F9" unchanged


Then some students who wrote like this cried
$a = "9E0";
var_dump( $a); // float(10)

#This TM has become scientific notation again. . .

PHP never follows the rules! <script>ec(2);</script>
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn