molily: Darstellung von Zeichen

Beitrag lesen

Hallo,

$id = str_pad($zahl,10,chr(0),STR_PAD_LEFT);

ist nicht das Gleiche wie

$id = str_pad($zahl,10,0x0,STR_PAD_LEFT);

$id = str_pad($zahl,10,"\x0");

Geht also nicht ohne Doppelhäkchen, oder?

»0x0« bedeutet etwas anderes als »"\x0"«.

»0x0« bedeutet int(0). Darüber lassen sich also Integer-Zahlen in ihrer hexadezimalen Schreibweise notieren.
Wenn dieser Integer wie hier in einen String umgewandelt wird (weil der dritte Parameter von str_pad ein String sein muss), kommt der String »0« heraus. Das bedeutet ein Oktett mit dem Wert 0x30 (in ASCII die arabische Ziffer Null). Dieser String kann auch direkt mit »"\x30"« oder einfach »"0"« oder »'0'« usw. notiert werden.

»chr(0)« liefert einen String mit dem Oktett 0x0 (in ASCII das Steuerzeichen NUL). Das ist äquivalent zur Notation »"\x0"«, nicht aber äquivalent zur Notation »0x0« (auch nicht nach der Typkonvertierung).

Mathias