php empty函数 使用说明_PHP教程
Determine whether a variable is considered to be empty.
但是在我的记忆中,有很长一段时间一直以为empty应该是能够判断一个东西是否为空的,直到有一天我像这样“empty(trim($a))”使用的时候出现了error,然后查手册才知道了原来empty函数只能判断一个变量是否为空,而不能判断一个字符串(或者其他的值,包括函数返回值)为空。虽然知道了这只是一个表层的原因,但是却没有再去了解深层次的原因。
最近对php内核产生了兴趣,又再次想起了这个问题,于是按照别人的经验写了以下一段代码:
echo "
"; <br>$tokens = token_get_all('<?php empty(trim($a));?>'); <br>foreach($tokens as $t){ <br> if (is_array($t)){ <br> printf("%s \t %s \n", token_name($t[0]), htmlspecialchars($t[1])); <br> }else{ <br> printf("\t%s\n", $t); <br> } <br>} <br>
结果输出如下:(这个如果不理解就看一下php手册附录的“List of Parser Tokens”那部分吧)
T_OPEN_TAG T_EMPTY empty
(
T_STRING trim
(
T_VARIABLE $a
)
)
T_CLOSE_TAG ?>
变量对应的token应该是T_VARIABLE,而trim($a)对应的是T_STRING。所以如果直接运行“empty(trim($a));”会导致运行错误:
Fatal error: Can't use function return value in write context
后来我想直接empty一个字符串会怎么样呢?结果导致的并不是运行错误,而是解析错误:
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `'$'' in ...
(感觉这个错误信息让人。。。)
查看字符串对应的token是T_CONSTANT_ENCAPSED_STRING(字符串语法)。虽然参数对于的token有所不同,但是他们都不是T_VARIABLE,应该在编译的阶段就出现错误才对,为什么。。。
于是也学着那些高人们查看php的源码来了。。。不过还没读懂相关的代码,呵呵,下次再分享~
最后重申一次,empty是语言结构,而非函数!
(和print,echo,include,require,die等等一样都是语言结构,网上某些文章说print有返回值就说是函数是不对的)

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.

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

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

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.
