Heim > Backend-Entwicklung > PHP-Tutorial > Verständnis und Vorsichtsmaßnahmen für PHP-Inkrementierungs- und Dekrementierungsoperatoren

Verständnis und Vorsichtsmaßnahmen für PHP-Inkrementierungs- und Dekrementierungsoperatoren

伊谢尔伦
Freigeben: 2023-03-10 22:50:01
Original
3613 Leute haben es durchsucht

Inkrement-Dekrement-Operator

vor Inkrementieren++++$a$a wird um 1 erhöht, dann $a zurückgeben

nach Inkrementieren++$a++ zuerst $a zurückgeben, dann $ a erhöht sich um 1

vor dem Dekrementieren----$a$a verringert sich um 1, gibt dann $a zurück

und verringert sich dann--$a--gibt zuerst $a und dann $ zurück a dekrementiert um 1

Der erste Hinweis: Inkrementierungs-/Dekrementierungsoperatoren haben keinen Einfluss auf boolesche Werte. Das Verringern eines NULL-Werts hat keine Auswirkung, aber das Erhöhen von NULL führt zu 1.

Mit anderen Worten: Bei Inkrementierungs-/Dekrementierungsoperationen werden die Operanden vor der Operation nicht in Ganzzahlen umgewandelt. Wenn der Operand ein boolescher Wert ist, wird das Ergebnis direkt zurückgegeben.

Inkrementieren/Dekrementieren Boolescher Wert:

$a = TRUE;
var_dump(++$a); // bool(true)

$a = TRUE;
var_dump(--$a); // bool(true)

$b = FALSE;
var_dump(++$b); // bool(false)

$b = FALSE;
var_dump(--$b); // bool(false)
Nach dem Login kopieren

Inkrementieren/Dekrementieren NULL:

$a = NULL;
var_dump(++$a); // int(1) 
$a = NULL;
var_dump(--$a); // NULL
Nach dem Login kopieren

Beim Umgang mit arithmetischen Operationen an Zeichenvariablen folgt PHP den Gewohnheiten von Perl, nicht denen von C .

Zum Beispiel verwandelt

$a = 'Z';
$a++;
Nach dem Login kopieren

in Perl $a in „AA“, während in C

a = 'Z';
a++;
Nach dem Login kopieren

a in „[“ ( der ASCII-Wert von „Z“ ist 90 und der ASCII-Wert von „[“ ist 91).

Beachten Sie, dass Zeichenvariablen nur inkrementiert, nicht dekrementiert werden können und nur reine Buchstaben (a-z und A-Z) unterstützen.

Zum Beispiel:

$a="9D9"; 
var_dump(++$a);  // string(3) "9E0"
Nach dem Login kopieren

Hier gibt es jedoch noch eine weitere Falle:

$a="9E0"; 
echo ++$a;  // 10
Nach dem Login kopieren

Nach der Installation der oben genannten Regeln sollte 9E1 ausgegeben werden, aber 10 wird ausgegeben Hier. . Warum?

Wenn wir es so schreiben, werden die meisten Menschen wissen, warum.

$a = "9E0"; 
var_dump(++$a);  // float(10)
Nach dem Login kopieren

Der Typ von $a ist Gleitkommazahl, d. h. 9E0 ist die wissenschaftliche Notation von Gleitkommazahlen, d. h. 9 * 10^0 = 9, für 9 Erhöhung ist das Ergebnis natürlich 10.

Referenz: String in numerischen Wert umwandeln

Jetzt kommt wieder die Frage:

$l = "Z99";
$l++;
Nach dem Login kopieren

Was ist das Ergebnis? Das Ergebnis ist „AA00“ gemäß den Regeln der Perl-Sprache.

Es gibt noch einen weiteren Hinweis:

Das Erhöhen/Verringern anderer Zeichenvariablen ist ungültig und die ursprüngliche Zeichenfolge ändert sich nicht.

Ich werde das nicht erklären.

Eine letzte Anmerkung:

$a = '012';
$a++;
var_dump($a);
Nach dem Login kopieren

Ist dieses Ergebnis „013“? 13? 11?

Das Ergebnis dieses Absatzes ist int(13) und die Zeichenfolge „012“ wird nicht als Oktalzeichenfolge behandelt.

$a = 012;   // 八进制,十进制为 10
$b = "012"; // 转换为整数为十进制 12
Nach dem Login kopieren

Was ist, wenn es mit 0x beginnt?

$a = '0x1A';
$a++;
var_dump($a);   // int(27)
Nach dem Login kopieren

Dinge, die mit 0 beginnen, gelten nicht als oktal, aber Dinge, die mit 0x beginnen, gelten als hexadezimal.

在 PHP 官方文档中 Integer 整型 还有另一个八进制陷阱:
Nach dem Login kopieren

var_dump(01090); // Oktal 010 = Dezimal 8

Das Handbuch erklärt dies als:

Warning
如果向八进制数传递了一个非法数字(即 8 或 9),则后面其余数字会被忽略。
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonVerständnis und Vorsichtsmaßnahmen für PHP-Inkrementierungs- und Dekrementierungsoperatoren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage