PHP 2 个字符串的错误?
PHP bug for 2 character strings?
给定字符串 $s
和函数 substr(substr($s, 1), -1)
你会期望从前面去掉一个字符,从后面去掉一个字符。
如果你 运行 substr(substr('abc', 1), -1) === 'b'
你会得到什么并且,如果你 运行 它在 ab
你会得到 b
.
但是,如果您 运行 substr(substr($s, -1), 1)
您会在 2 个字符串上获得所需的结果。
这在 PHP 5.5 和 7.0
中是相同的
substr(substr('ab', 1), -1)
发生了什么:
substr('ab', 1)
returnb
,以及substr('b', -1)
returnb
。为什么?由于 documented,如果 substr
的第二个参数为负数,则 returned 字符串将从字符串.
改为substr(substr('ab', -1), 1)
:
substr('ab', -1)
将 return b
和 substr('b', 1)
return false
,因为,始终如文档所示:如果字符串小于起始字符长,则 FALSE 将被 returned.
这里没有错误。
给定字符串 $s
和函数 substr(substr($s, 1), -1)
你会期望从前面去掉一个字符,从后面去掉一个字符。
如果你 运行 substr(substr('abc', 1), -1) === 'b'
你会得到什么并且,如果你 运行 它在 ab
你会得到 b
.
但是,如果您 运行 substr(substr($s, -1), 1)
您会在 2 个字符串上获得所需的结果。
这在 PHP 5.5 和 7.0
中是相同的substr(substr('ab', 1), -1)
发生了什么:
substr('ab', 1)
returnb
,以及substr('b', -1)
returnb
。为什么?由于 documented,如果substr
的第二个参数为负数,则 returned 字符串将从字符串.
改为substr(substr('ab', -1), 1)
:
substr('ab', -1)
将 returnb
和substr('b', 1)
returnfalse
,因为,始终如文档所示:如果字符串小于起始字符长,则 FALSE 将被 returned.
这里没有错误。