Ich muss das letzte Zeichen einer Zeichenkette abrufen. Sagen wir, ich habe "testers" als Eingabe-String und ich möchte, dass das Ergebnis "s" ist. wie kann ich das in PHP tun?
Antworten
Zu viele Anzeigen?Oder durch direkter String-Zugriff :
$string[strlen($string)-1];
Beachten Sie, dass dies nicht für Multibyte-Strings funktioniert. Wenn Sie mit Multibyte-Strings arbeiten müssen, sollten Sie die Funktion mb_*
String-Familie von Funktionen.
Seit PHP 7.1.0 werden auch negative numerische Indizes unterstützt, z.B. $string[-1];
Ab PHP 7.1 können Sie dies tun ( Akzeptierte rfc für negative String-Offsets ):
<?php
$silly = 'Mary had a little lamb';
echo $silly[-20];
echo $silly{-6};
echo $silly[-3];
echo $silly[-15];
echo $silly[-13];
echo $silly[-1];
echo $silly[-4];
echo $silly{-10};
echo $silly[-4];
echo $silly[-8];
echo $silly{3}; // <-- this will be deprecated in PHP 7.4
die();
Ich lasse Sie das Ergebnis erraten.
Außerdem habe ich dies zu Xenonit Leistungscode mit diesen Ergebnissen:
substr() dauerte 7,0334868431091Sekunden
Array-Zugriff dauerte 2,3111131191254 Sekunden
Der direkte String-Zugriff (negative String-Offsets) dauerte 1,7971360683441 Sekunden.
Seit PHP 7.1.0 werden auch negative String-Offsets unterstützt. Wenn Sie also mit der Zeit gehen, können Sie auf das letzte Zeichen in der Zeichenkette wie folgt zugreifen:
$str[-1]
Auf die Bitte eines @mickmackusa ergänze ich meine Antwort mit möglichen Anwendungsmöglichkeiten:
<?php
$str='abcdef';
var_dump($str[-2]); // => string(1) "e"
$str[-3]='.';
var_dump($str); // => string(6) "abc.ef"
var_dump(isset($str[-4])); // => bool(true)
var_dump(isset($str[-10])); // => bool(false)
- See previous answers
- Weitere Antworten anzeigen