2017-05-11 56 views
2

我最近在使用PHP中的ctype_*函数组,发现奇怪的行为。例如,我有一些代码:为什么PHP中的ctype_space对于某些数值返回“true”?

for ($i = 0; $i < 1000000; $i++) { 
     if (ctype_space($i)) { 
      var_dump($i); 
     } 
    } 

$i时具有值[9,10,11,12,13,32]然后[ctype_space][1]将返回真。我使用的是接下来的PHP版本:

PHP 7.1.4-1+deb.sury.org~xenial+1 (cli) (built: Apr 11 2017 22:12:32) (NTS) 
    Copyright (c) 1997-2017 The PHP Group 
    Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies 
     with Zend OPcache v7.1.4-1+deb.sury.org~xenial+1, Copyright (c) 1999-2017, by Zend Technologies 
     with Xdebug v2.5.1, Copyright (c) 2002-2017, by Derick Rethans 

这是错误或PHP的功能?也许我不知道什么?请帮助我理解它。

+1

引述手册:*“注:如果提供-128和255之间的整数,它被解释为的ASCII值单个字符(为了允许扩展ASCII范围内的字符,负值有256个)任何其他整数都被解释为包含整数小数位的字符串。“* ... 9是TAB,10是LF .. 。 等等。 – CD001

回答

6

the manual

如果提供-128和255之间的整数,它被解释为单个字符的ASCII值(负值有为了允许字符中加入256扩展的ASCII范围)。任何其他整数都被解释为包含整数的十进制数字的字符串。

在ASCII这些数字的空白字符:

9 Horizontal tab 
10 New Line 
11 Vertical Tab 
12 Form feed 
13 Carriage return 
32 Space 
+0

谢谢你的解释 –

3

您实际上已链接到包含答案的文档。

如果提供了-128到255之间的整数,则它被解释为单个字符的ASCII值(负值为了允许扩展ASCII范围中的字符而添加了256)。任何其他整数都被解释为包含整数的十进制数字的字符串。

相关问题