php递增递减运算符理解及注意事项
前递增++++$a$a自增1,然后返回$a
后递增++$a++先返回$a,然后$a自增1
前递减----$a$a自减1,然后返回$a
后递减--$a--先返回$a,然后$a自减1
第一个注意事:递增/递减运算符不影响布尔值。递减NULL值也没有效果,但是递增NULL的结果是1。
换句话说:递增/递减运算中,不会把操作数转换成整数后再运算。如果运算数是布尔值,则直接返回结果。
递增/递减布尔值:
$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)
递增/递减NULL:
$a = NULL; var_dump(++$a); // int(1) $a = NULL; var_dump(--$a); // NULL
在处理字符变量的算数运算时,PHP 沿袭了 Perl 的习惯,而非 C 的。
例如,在 Perl 中
$a = 'Z'; $a++;
将把$a变成'AA',而在 C 中,
a = 'Z'; a++;
将把a变成'['('Z'的 ASCII 值是90,'['的 ASCII 值是91)。
注意字符变量只能递增,不能递减,并且只支持纯字母(a-z 和 A-Z)。
例如:
$a="9D9"; var_dump(++$a); // string(3) "9E0"
但是,这里又有一个陷阱了:
$a="9E0"; echo ++$a; // 10
安装上面的规则,应该输出9E1,但是这里却输出了10。为什么?
如果我们这么写,大部人就知道是为什么了。
$a = "9E0"; var_dump(++$a); // float(10)
$a的类型是浮点型,也就是说,9E0是浮点数的科学记数法,即9 * 10^0 = 9,对9自增,结果当然是10了。
参考:字符串转换为数值
现在问题又来了:
$l = "Z99"; $l++;
这个结果是多少呢?结果按照 perl 语言的规则,是"AA00"。
还有一个注意事项:
递增/递减其他字符变量则无效,原字符串没有变化。
这个就不解释了。
最后一个注意事项:
$a = '012'; $a++; var_dump($a);
这个结果是'013'?13?11?
这段的结果是int(13),字符串'012'并没有被当作八进制。
$a = 012; // 八进制,十进制为 10 $b = "012"; // 转换为整数为十进制 12
如果是0x开头的呢?
$a = '0x1A'; $a++; var_dump($a); // int(27)
0开头的不被认为是八进制,但是0x开头的却被认为是十六进制。
在 PHP 官方文档中 Integer 整型 还有另一个八进制陷阱:
var_dump(01090); // 八进制 010 = 十进制 8
手册中对此的解释为:
Warning 如果向八进制数传递了一个非法数字(即 8 或 9),则后面其余数字会被忽略。
Atas ialah kandungan terperinci php递增递减运算符理解及注意事项. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

Untuk bekerja dengan tarikh dan masa dalam cakephp4, kami akan menggunakan kelas FrozenTime yang tersedia.

CakePHP ialah rangka kerja sumber terbuka untuk PHP. Ia bertujuan untuk menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP adalah berdasarkan seni bina seperti MVC yang berkuasa dan mudah difahami. Model, Pandangan dan Pengawal gu

Untuk mengusahakan muat naik fail, kami akan menggunakan pembantu borang. Di sini, adalah contoh untuk muat naik fail.

Pengesah boleh dibuat dengan menambah dua baris berikut dalam pengawal.

Log masuk CakePHP adalah tugas yang sangat mudah. Anda hanya perlu menggunakan satu fungsi. Anda boleh log ralat, pengecualian, aktiviti pengguna, tindakan yang diambil oleh pengguna, untuk sebarang proses latar belakang seperti cronjob. Mengelog data dalam CakePHP adalah mudah. Fungsi log() disediakan

Kod Visual Studio, juga dikenali sebagai Kod VS, ialah editor kod sumber percuma — atau persekitaran pembangunan bersepadu (IDE) — tersedia untuk semua sistem pengendalian utama. Dengan koleksi sambungan yang besar untuk banyak bahasa pengaturcaraan, Kod VS boleh menjadi c

CakePHP ialah rangka kerja MVC sumber terbuka. Ia menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP mempunyai beberapa perpustakaan untuk mengurangkan beban tugas yang paling biasa.
