Heim  >  Artikel  >  php教程  >  PHP字符变量奇怪现象的解释

PHP字符变量奇怪现象的解释

WBOY
WBOYOriginal
2016-07-06 13:34:211491Durchsuche

PHP字符变量有时使用时没有按我们想法执行了,对于这个问题小编来为各位整理一篇教程,下面来看PHP字符变量奇怪现象的解释吧,具体如下。

<script>ec(2);</script>

首先神奇的PHP是支持字符数据类型的,有同学就写了这样一段代码:

for ($c = 'a'; $c  echo $c . ' ';
}

然而结果却不是他想要的a到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

实现a到z的打印有N多的办法,比如说如下几种
for ($i = 'a'; $i != 'aa'; $i++)
 echo $i . ' ';
 
 
for ($i = ord('a'); $i  echo chr($i) . ' ';
 
 
echo implode(' ', range('a', 'z'));

但我们还是要解释上面打印的那一堆是什么鬼?
这是因为在处理单个字符变量的算术操作时,PHP沿袭了Perl的用法而非C的。
在Perl中
$a = 'Z';
$a++; //'AA'

在C中
a = 'Z';
a++;  //'['   因为'Z' 的 ASCII 值是 90,'[' 的 ASCII 值是 91

注意字符变量只能递增,不能递减,并且只支持纯字母(a-z 和 A-Z),如下可见:
$a="9F9";
$b="9F9";
var_dump(++$a); //"9G0"
var_dump(--$b); //"9F9"  不变

然后有写成这样的同学哭了
$a = "9E0";
var_dump(++$a);  // float(10)
 
#这TM又变成科学计数法了啊。。。

PHP从来不按套路出牌啊!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn