Strings automatisch in Integer konvertieren (Thema: PHP Beispiele)

Type Juggling in PHP zur automatischen Konvertierung von String zu Integer nutzen

URL: http://www.rither.de/a/informatik/php-beispiele/strings/strings-automatisch-in-integer-konvertieren/

1. Erläuterungen

Strings werden von PHP — je nach Kontext — im Rahmen des sogenannten Type Jugglings automatisch in Integer umgewandelt. Das Prinzip ist dabei einfach: Vom String werden alle Zeichen am Anfang ausgelesen, die zu den Ziffern von 0 bis 9 gehören. Aus diesen wird dann der Integer-Wert gebildet. Ab dem ersten Zeichen, das keine Ziffer ist, werden dieses und alle folgenden Zeichen ignoriert. Beginnt der String nicht mit einer Ziffer, dann wird er als 0 interpretiert.

2. Vergleich mit ==

In diesem Beispiel wird der Integer-Wert 123 mit dem String „123” in verschiedenen Ausführung verglichen.

PHP-Code
<?php
	var_dump(
		123 == '123',    // true
		123 == '123a',   // true
		123 == 'a123',   // false
		123 == '123.1',  // false
		123 == '1abc',   // false
		123 == 'abc',    // false
		123 == '1a2b3c', // false
		  0 == 'abc'     // true
	);
?>

HTML-Code: Ausgabe
bool(true)
bool(true)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(true)


3. Vergleich mit ===

Type Juggling, also das automatische Konvertieren, erfolgt nicht wenn der Identitätsoperator === verwendet wird. Mit === wird nämlich zuerst geprüft, ob die beiden Variablen auch den selben Datentyp haben. Vergleicht man Integer mit Strings, ist dies offensichtlich nie gegeben.

PHP-Code
<?php
	var_dump(
		123 === '123',   // false
		123 === '123a',  // false
		123 === 'a123',  // false
		123 === '123.1', // false
		123 === '1abc',  // false
		123 === 'abc',   // false
		123 === '1a2b3c' // false
	);
?>

HTML-Code: Ausgabe
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)


4. Vergleich mit > (größer als)

Analog zum Vergleich über den Operator „==” erfolgt die Anwendung von „größer als” (>).

PHP-Code
<?php
	var_dump(
		123 > '123',    // false
		123 > '123a',   // false
		123 > 'a123',   // true
		123 > '123.1',  // false
		123 > '1abc',   // true
		123 > 'abc',    // true
		123 > '1a2b3c', // true
		123 > '111111a2b3c', // false
		123 > '999a'    // false
	);
?>

HTML-Code: Ausgabe
bool(false)
bool(false)
bool(true)
bool(false)
bool(true)
bool(true)
bool(true)
bool(false)
bool(false)


Um unsere Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen zu Cookies erhalten Sie in unserer Datenschutzerklärung. OK