2016-04-08 10 views
1

Mit der Zeichenfolge und der Funktion substr(substr($s, 1), -1) würden Sie erwarten, dass ein Zeichen von der Vorderseite und ein Zeichen von der Rückseite entfernt wird.PHP Bug für 2 Zeichenfolgen?

Welches ist, was Sie erhalten, wenn Sie substr(substr('abc', 1), -1) === 'b' ausführen Und wenn Sie es auf ab ausführen, erhalten Sie b.

Wenn Sie jedoch substr(substr($s, -1), 1) ausführen, erhalten Sie das gewünschte Ergebnis für 2 Zeichenfolgen.

Dies ist das gleiche in PHP 5.5 und 7.0 ist

+1

Was ist das gewünschte Ergebnis bei 2 Zeichenfolgen? – Federkun

+0

, damit es leer ist, egal ob 1 oder -1 zuerst kommt –

+0

Ich meine, ich habe herausgefunden, wie ich es umgehen kann, aber es ist ein seltsames Verhalten –

Antwort

2

Was mit substr(substr('ab', 1), -1) passieren:

  • substr('ab', 1) return b und substr('b', -1) Rückkehr b. Warum? Als documented, wenn das zweite Argument von substr negativ ist, wird die zurückgegebene Zeichenfolge am start'th Zeichen vom Ende der Zeichenfolge beginnen.

statt mit substr(substr('ab', -1), 1):

  • substr('ab', -1)b zurück, und substr('b', 1) Rückkehr false, weil immer dokumentiert: Wenn Zeichenfolge weniger als lange Zeichen beginnen, wird FALSE zurückgegeben werden.

Kein Bug hier.

+0

danke, sah das nicht in der docs zuerst :) –