2016-04-08 9 views
1

文字列$sと関数substr(substr($s, 1), -1)を指定すると、1文字が前面に、1文字が背面に表示されます。2文字列のPHPバグ?

substr(substr('abc', 1), -1) === 'b'を実行した場合の結果はabで実行するとbとなります。

ただし、substr(substr($s, -1), 1)を実行すると、2文字の文字列で目的の結果が得られます。これはPHP 5.5で同じである

と7.0 substr(substr('ab', 1), -1)で起こる何

+1

2文字列の結果はどうなっていますか? – Federkun

+0

1または-1が最初に来るかどうかに関わらず空にする –

+0

私はそれを回避する方法を考え出しましたが、その奇妙な振る舞い –

答えて

2

  • substr('ab', 1)リターンb、およびsubstr('b', -1)リターンbを。どうして? documentedの場合、substrの2番目の引数が負の場合、返される文字列は、文字列の最後から開始する第1文字から開始します。文字列が長い文字を始めるよりも小さい場合、FALSEが返されます:文書いつものように、ため

    • substr('ab', -1)bを返し、substr('b', 1)リターンfalse、:substr(substr('ab', -1), 1)との代わりに

ここにバグはありません。

+0

ありがとう、最初にドキュメントでそれを見ていない:) –