<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Bool on 搁浅St的blog</title>
        <link>https://blog.huirongis.me/tags/bool/</link>
        <description>Recent content in Bool on 搁浅St的blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-CN</language>
        <lastBuildDate>Sun, 08 Nov 2026 16:13:21 +0000</lastBuildDate><atom:link href="https://blog.huirongis.me/tags/bool/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>php中的bool值和类型转换</title>
        <link>https://blog.huirongis.me/post/php-boolean-value/</link>
        <pubDate>Mon, 20 Jul 2015 14:23:21 +0000</pubDate>
        
        <guid>https://blog.huirongis.me/post/php-boolean-value/</guid>
        <description>&lt;p&gt;最近在写php,发现有个问题一直无法避免,那就是关于php的bool值和类型转换.
以前每次遇到要校验一个变量&lt;code&gt;$a&lt;/code&gt;,是否为空,都是使用&lt;code&gt;$a==&#39;&#39;&lt;/code&gt;去判断,感觉不是很懂,反正一直这样用,也没出太多纰漏,而没有理会什么NUll,&amp;rsquo;&amp;rsquo;,0之类的其他值.今天决定研究下,把它彻底搞清楚.&lt;/p&gt;
&lt;h1 id=&#34;1-php的数据类型&#34;&gt;1 php的数据类型
&lt;/h1&gt;&lt;p&gt;php支持原始的8总数据类型.
4总标量类型:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;boolean&lt;/li&gt;
&lt;li&gt;integer&lt;/li&gt;
&lt;li&gt;float(也称作double类型)&lt;/li&gt;
&lt;li&gt;string
2种复合类型&lt;/li&gt;
&lt;li&gt;array(数组)&lt;/li&gt;
&lt;li&gt;object(对象)
2种特殊类型&lt;/li&gt;
&lt;li&gt;resource(资源)&lt;/li&gt;
&lt;li&gt;NULL(无类型)
实际上 double 和 float 是相同的，由于一些历史的原因，这两个名称同时存在。
变量的类型通常不是由程序员设定的，确切地说，是由PHP根据该变量使用的上下文在运行时决定的。
前面几种类型很好理解,现在重点看一下resource类型和NULL类型&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;resource&lt;/code&gt; 是一种特殊变量，保存了到外部资源的一个引用。资源是通过专门的函数来建立和使用的。由于资源类型变量保存有为打开文件、数据库连接、图形画布区域等的特殊句柄，因此将其它类型的值转换为资源没有意义。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;NULL&lt;/code&gt;,特殊的NULL值表示一个变量没有值。NULL类型唯一可能的值就是 NULL。在下列情况下一个变量被认为是NULL：&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;被赋值为 NULL。&lt;/li&gt;
&lt;li&gt;尚未被赋值。&lt;/li&gt;
&lt;li&gt;被 unset()。&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;2-常用的比较函数&#34;&gt;2 常用的比较函数
&lt;/h1&gt;&lt;h3 id=&#34;empty&#34;&gt;empty()
&lt;/h3&gt;&lt;p&gt;这个函数最近经常见到,它比较有特点.
如果 var 是非空或非零的值，则empty()返回&lt;code&gt;FALSE&lt;/code&gt;。
换句话说，&amp;quot;&amp;quot;、0、&amp;ldquo;0&amp;rdquo;、NULL、FALSE、array()、var $var以及没有任何属性的对象都将
被认为是空的，返回 TRUE。
如果变量没有赋值,empty()也不会报错.&lt;/p&gt;
&lt;h3 id=&#34;is_set&#34;&gt;is_set()
&lt;/h3&gt;&lt;p&gt;这个函数和is_null()刚好相反,如果一个函数的is_null()返回&lt;code&gt;true&lt;/code&gt;,那么它的is_set()则必定返回相反值,&lt;code&gt;false&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;is_null&#34;&gt;is_null()
&lt;/h3&gt;&lt;p&gt;所有的&lt;code&gt;is_&lt;/code&gt;开头的函数,都不会进行类型转换,例如is_bool(&amp;lsquo;0&amp;rsquo;),返回false,因为&#39;0&amp;rsquo;不是一个布尔类型的值.
详细对比看下图
&lt;img src=&#34;https://blog.huirongis.me/images/692869a3gw1euak04nwitj20nf0i2432.jpg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;使用 PHP 函数对变量 $x 进行比较&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;更多更详细的比较,大家看这里&lt;a class=&#34;link&#34; href=&#34;http://php.net/manual/zh/types.comparisons.php&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;php类型比较表&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
