2017-05-11 55 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)。任何其他整數都被解釋爲包含整數的十進制數字的字符串。

相關問題