PHP.net关于 range
函数的文档有点缺乏。当给定字符范围时,这些函数会产生意想不到的(无论如何对我来说)结果。
$m = 范围('A','z');
print_r($m);
$m = 范围('~','"');
print_r($m);
我正在寻找可能明确定义其行为的引用。
最佳答案
问题是 range 将其参数视为整数,如果您给它一个单个字符,它会将其转换为 ASCII字符代码。
在第一种情况下,您将获取字符“A”(整数 65)和字符“z”(整数 122)之间的所有字符。对于我们这些具有 C(或类 C 语言)背景的人来说,这是预期的行为。
这是 PHP 将单个字符转换为其 ASCII 代码而不是像通常那样将字符串解析为整数的罕见情况之一。大多数 PHP 文档都能更好地告诉您何时会发生这种情况。 strpos例如,注释:
Needle
block 引用>If needle is not a string, it is converted to an integer and applied as the ordinal value of a character.
range 的文档对此出奇地安静。
关于php 的 range 函数行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3843131/