2016-04-08 28 views
1

给定字符串$s和函数substr(substr($s, 1), -1)你会期望一个字符从前面和后面被取下。2个字符串的PHP错误?

如果您运行substr(substr('abc', 1), -1) === 'b',您将得到的结果如果您在ab上运行,则会得到b

但是,如果您运行的是substr(substr($s, -1), 1),您将得到2个字符串所需的结果。

这是PHP 5.5的相同和7.0

+1

2个字符串的结果是什么? – Federkun

+0

它是空的,无论1或-1是否为1 –

+0

我的意思是我想出如何避开它,但它的奇怪行为 –

回答

2

什么用substr(substr('ab', 1), -1)发生:

  • substr('ab', 1)回报b,并substr('b', -1)回报b。为什么?如documented,如果substr的第二个参数为负数,则返回的字符串将从字符串末尾的第start个字符处开始。

不是与substr(substr('ab', -1), 1)

  • substr('ab', -1)将返回b,并substr('b', 1)false,因为,总是像记载:如果字符串小于长的启动字符,FALSE将被退回。

这里没有问题。

+0

谢谢,没有看到在第一次的文档中的:) –