2016-04-08 29 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

謝謝,沒有看到在第一次的文檔中的:) –