44 Stimmen

PHP: Erste Stelle von Zahl oder String auslesen

Tutorial von Stefan Trost | Letztes Update am 30.12.2022 | Erstellt am 07.02.2014

Frage: Ich habe einige Zahlen und Strings und möchte nun mit der Hilfe von PHP die erste Ziffer der Zahl beziehungsweise die erste Stelle (das erste Zeichen) des Strings bestimmen. Weiß jemand, wie das geht?

Strings

Einen String kannst du prinzipiell so wie einen Array behandeln, um die erste Stelle aus zu lesen:

$s = '123';
$a = $s[0];  
echo $a; // 1

Also einfach die eckigen Klammern benutzen. Die erste Stelle ist dabei die 0, die zweite die 1 und so weiter.

Vorsicht ist hier allerdings geboten, falls der String Zeichen außerhalb des ASCII-Ranges enthält, also Zeichen die mehr als ein Byte einnehmen, da diese Art von Zugriff byteweise erfolgt. Mit Strings, die nur Zahlen oder Buchstaben im Bereich A-Z und a-z enthalten gibt es mit dieser Methode also keine Probleme, jedoch falls wir Umlaute oder andere Multibyte-Zeichen verwenden.

Zahlen

Hast du als Variable eine Zahl, funktioniert das mit den eckigen Klammern allerdings nicht. Mir fallen spontan drei Möglichkeiten ein, wie man es machen könnte:

// Möglichkeit 1
$k = 123;
$s = $k.''; // oder: $s = (string)$k;
$a = $s[0];  
echo $a; // 1

// Möglichkeit 2
$k = 123;
$a = floor($k/100);
echo $a; // 1

// Möglichkeit 3
$k = 123;
$a = substr($k, 0, 1); 
echo $a; // 1

Die erste Möglichkeit ist es, die Zahl vorher in einen String umzuwandeln und dann vorzugehen, wie bei einem String. Das geht zum Beispiel indem man der Variable einfach einen leeren String anhängt oder über einen Type-Cast, indem wir (string) vor die Variable schreiben (mehr über Typumwandlungen).

Die zweite Möglichkeit lässt die Variable eine Zahl sein. Wir teilen die 123 einfach durch 100, erhalten 1,23 und schneiden mit floor() die Stellen hinter dem Komma ab. Diese Vorgehensweise setzt natürlich voraus, dass wir die Anzahl der Stellen der Zahl kennen oder diese vorher ermitteln müssten. Bei einer zweistelligen Zahlen müssten wir entsprechend durch 10 teilen, bei einer vierstelligen Zahl durch 1000.

Die dritte und letzte Möglichkeit, die ich vorstellen möchte arbeitet mit substr(). Dies ist eine PHP-Funktion, die Teil eines Strings zurückgeben kann. Der erste übergebene Parameter ist die Variable, der zweite der Startpunkt, der dritte die Länge. In unserem Beispiel können wir direkt eine Zahl als Variable übergeben, da substr() für uns die Typumwandlung durchführt. Da uns die erste Stelle interessiert, beginnen wir mit 0 und schneiden nur eine Länge von 1 für das erste Zeichen ab.

AntwortenPositivNegativ

Über den Autor

AvatarSoftware von Stefan Trost finden Sie auf sttmedia.de. Benötigen Sie eine individuelle Software nach Ihren eigenen Wünschen? Schreiben Sie uns: sttmedia.de/kontakt
Profil anzeigen

 

Ähnliche Themen

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.