Strings automatisch in Integer konvertieren (Thema: PHP Beispiele)

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

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)


Kommentare (0)

Von neu nach alt