首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PHP的empty()函数的奇怪行为

PHP的empty()函数是一个用于判断变量是否为空的函数。它的奇怪行为在于,它会将一些看似非空的值判定为空。

empty()函数的行为规则如下:

  1. 如果变量不存在、为null、或者被赋值为false,那么empty()函数会返回true。
  2. 如果变量的值为0或者字符串"0",empty()函数会返回true。
  3. 如果变量是一个空数组、空字符串、空对象、空资源或者空SimpleXML对象,empty()函数会返回true。
  4. 对于其他情况,empty()函数会返回false。

这个函数的奇怪行为在于,它将0和字符串"0"也判定为空。这是因为在PHP中,0被视为一个空值,而字符串"0"被视为一个空字符串。

empty()函数的应用场景包括:

  1. 检查用户输入是否为空,例如表单提交时的数据验证。
  2. 检查变量是否存在,避免使用未定义的变量。
  3. 检查数据库查询结果是否为空。

在腾讯云的PHP开发环境中,可以使用empty()函数来进行变量的空值判断。腾讯云提供了云服务器(CVM)和云函数(SCF)等产品,用于支持PHP应用的部署和运行。您可以通过腾讯云控制台或者API进行相关产品的管理和配置。

更多关于PHP的empty()函数的详细信息,您可以参考腾讯云的官方文档:PHP empty()函数

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

delete奇怪行为

delete奇怪行为分为2部分: // 1.delete用defineProperty定义属性报错 // Uncaught TypeError: Cannot delete property 'value...但规则是这样,所以奇怪行为1是合理 占位初始值 猜测如果属性已经存在了,defineProperty()会收敛一些,考虑一下原descriptor感受: var obj = {}; obj.value...环境(比如onclick属性值执行环境,函数调用创建执行环境)和eval环境(eval传入代码执行环境) 变量对象/活动对象 每个执行环境都对应一个变量对象,源码里声明变量和函数都作为变量对象属性存在...执行环境,变量对象一般不是global,叫做活动对象,每次进入Function执行环境,都创建一个活动对象,除了函数体里声明变量和函数外,各个形参以及arguments对象也作为活动对象属性存在,虽然没有办法直接验证...,能不能删可能只是configurable一部分) 遵循规则是:通过声明创建变量和函数带有一个不能删天赋,而通过显式或者隐式属性赋值创建变量和函数没有这个天赋 内置一些对象属性也带有不能删天赋

2.3K30

php函数 isset(), empty(), is_null() 区别

is_null(): bool is_null ( mixed $var ) (php.net官方文档函数定义) 当参数满足下面三种情况时,is_null()将返回TRUE,其它情况就是FALSE...如果没有设置变量,变量未赋值,或变量被设为NULL,isset()函数就返回NULL。正好和is_null()函数相反,is_null()为TRUE情况在isset()中就为FALSE。有意思!...请见上面的类型比较表empty()那一列你就明白哪些情况是空情形了。还有其他一些函数参照。...来看一些例子: $myvar = NULL; empty($myvar); // TRUE $myvar = 0; empty($myvar); // TRUE $myvar = FALSE; empty...empty()判断,就是变量存在,且值不为””、0、”0″、NULL、FALSE、array()以及只是单纯定义一个变量var。

1.5K40

PHP开发过程那些坑(二) ——PHP empty函数

PHP开发过程那些坑(二)——PHP empty函数 (原创内容,转载请注明来源,谢谢) 坑: 在工作过程中,常用empty()函数判断数组是否为空,为空时返回true,不是为空时返回false。...经过不断设断点、error_log()打log,发现把array_diff挪到外面就可以正常使用。经过查资料,才发现empty函数确实是不允许嵌套函数。...分析: 查看PHP官方手册,http://php.net/manual/zh/function.empty.php,发现里面有这么一段话:“在 PHP 5.5 之前,empty() 仅支持变量;任何其他东西将会导致一个解析错误...因此,说明在PHP5.5或者更高版本,是可以支持empty()里面传其他内容,但是如果使用PHP5.5之前版本,还是先定义一个变量,再把这变量传进empty。...——written by linhxx 2017.07.08 相关阅读: PHP开发过程那些坑(一) ——对象拷贝

1.1K80

php empty()和isset()区别

在使用php编写页面程序时,我经常使用变量处理函数判断php页面尾部参数某个变量值是否为空PHP 在使用 php 编写页面程序时,我经常使用变量处理函数判断...php 页面尾部参数某个变量值是否为空,开始时候我习惯了使用 empty() 函数,却发现了一些问题,因此改用 isset() 函数,问题不再。...原来,empty() 和 isset() 虽然都是变量处理函数,它们都用来判断变量是否已经配置,它们却是有一定区别:empty还会检测变量是否为空、为零。...单从empty()和isset()这两个函数本身来考虑的话会把人弄得更糊涂,换一个角度来它。empty()和isset()处理对象无外乎未定义变量,0,空字符串。...当要 判断一个变量是否已经声明时候 可以使用 isset 函数 当要 判断一个变量是否已经赋予数据且不为空 可以用 empty 函数 当要 判断 一个变量 存在且不为空 先isset 函数 再用 empty

2K60

奇怪函数调用

原因就是数组越界赋值,代码如下: arr[7] = (int)Attack; 在 C 语言中,函数名称就是函数首地址。...上面的赋值语句是将 arr[7] 位置赋值为了 Attack 函数地址。而 arr[7] 又是何物呢?在了解 arr[7] 之前,需要了解函数调用与函数栈帧。...C 语言在调用函数时,根据函数调用约定(C 语言调用约定为 _cdcel)先将参数从右至左依次入栈,然后将返回地址压入栈中。...位置处保存着返回地址,也就是调用当前函数函数下一条指令。...比如,A 函数中调用了 B 函数,当 B 函数执行完成后,会接着执行 A 函数中,调用 B 函数下一条指令。而此时,返回地址被覆盖为 0041105A,那么,这个 0041105A 是什么值?

1.7K30

PHPempty() 和 isset() 区别

区别: empty() 函数用于检查一个变量是否为空。当一个变量并不存在,或者它值等同于 FALSE,那么它会被认为不存在。如果变量不存在的话,empty()并不会产生警告。...isset() 函数用于检测变量是否已设置并且非 NULL。如果已经使用 unset() 释放了一个变量之后,再通过 isset() 判断将返回 FALSE。...若使用 isset() 测试一个被设置成 NULL 变量,将返回 FALSE。同时要注意是 null 字符("\0")并不等同于 PHP NULL 常量。...1、对于未设置变量判断 // 对于未设置变量判断 if (empty($a)) { echo "empty:变量为空" ....""; } ##结果 empty:变量为空 isset:变量已设置且不为空 3、对于 0 (作为整数0) 判断 // 对于 0 (作为整数0) 判断 $a = 0; if (empty(

1.2K40

PHP开发过程那些坑(五) ——PHPempty()

PHP开发过程那些坑(五)——PHPempty() (原创内容,转载请注明来源,谢谢) 一、遇到问题 PHPempty不是一个函数,而是一个语言结构,用其可以判断大多数变量是否为空。...但是,在判断private属性(已经用魔术方法__get()保证可以获取到)时候,会发生奇怪事情。...2、$prop = $obj->prop; empty($prop); 3、将对象private设置成public。...——written by linhxx 2017.09.14 相关阅读: PHP开发过程那些坑(四) ——PDO bindParam函数 PHP开发过程那些坑(三) ——PHParray_shift...函数 PHP开发过程那些坑(二) ——PHP empty函数 PHP开发过程那些坑(一) ——对象拷贝

95160

PHPempty,is_null,isset区别

empty 判断变量是否为空,如果变量是非空 或非零 值,则 empty() 返回 FALSE。...若使用 isset() 测试一个被设置成 NULL 变量,将返回 FALSE。同时要注意是一个 NULL 字节("\0")并不等同于 PHP NULL 常数。...从以上例子中,我们也可以得出下面这几个结论(以后编程中会经常用到哦): 假设 $var 是任何type 当 empty(var) 为 true 时,(bool)(var) 为 false 。...例如: i=j+1; 这里is_null(j)为true(可以理解为因为 isset(j)为false,因为没有事先声明 另外需要注意两点是: (1)empty() 只检测变量,检测任何非变量东西都将导致解析错误...若想检测常量是否已设置,可使用 defined() 函数

1K20

taskscheduler java_java – taskScheduler池奇怪行为「建议收藏」

我有两个弹簧启动应用程序(1.4.3.RELEASE),它们位于同一台服务器上.应用程序A是一个单一应用程序,其中包含用于处理警报部分代码,而应用程序B是一个仅处理警报新专用应用程序.这里目标是打破小应用程序中...threadPoolTaskScheduler.setWaitForTasksToCompleteOnShutdown(true); threadPoolTaskScheduler.setPoolSize(100); return threadPoolTaskScheduler; } } 昨天,我经历了一个奇怪行为...已检测到警报并将其发送到新应用B – >好 >应用程序B收到警报并开始根据taskScheduler处理它 – >好 >第一步已由应用程序B处理 – >好 >第二步已由应用程序A处理 – > NOK,奇怪行为...对我来说,每个taskScheduler都附加到创建它应用程序.我哪里错了?...UPDATE 我有一个发出警报真实盒子.这些警报必须由新应用程序处理.但我还有旧盒子没有迁移到新系统.所以我在两个不同项目中有处理代码.

1.7K10

PHP为什么empty可以访问不存在索引

开始之前, 先抛出问题: $arr = []; echo 'empty: ', PHP_EOL; var_dump(empty($arr['1'])); echo 'is_array: ', PHP_EOL...有没有发现, 编译器在显示时候, empty函数和is_array函数颜色不一样. 而empty和echo是相同颜色, 那不就是说他们俩是一类货色么. 再看一下: ? 有没有发现什么?...PHP关键字用就是这个颜色. 我仿佛明白了些什么. 随后, 我就去翻了翻官方文档, 还真让我发现了些许端倪, 在empty函数文档下, 有这样一段: ?...简单来说, 就是 PHP 所定义那些关键字. 虽然用法看起来像函数, 但是在调用时候直接映射到预先定义好一系列操作, 而不会像函数一样进行传参等等解析操作....对了, 再悄悄告诉你, PHP 中, 系统函数是可以被重新定义, 只要你写一个同名函数就行, 但是关键字这几个老兄不吃这一套哦.

62920

奇怪知识

是一种战略选择和组织形式, 是依据企业特有的业务模式和组织架构, 通过有形产品和可实施方法构建一套持续不断 把数据变成资产并服务于业务机制。...企业需要完整数据资产体系, 围绕着能给业务带来价值数据资产进行建设, 推动业务数据向数据资产转化。...传统数字化建设往往局限在单个业务流程, 忽视了多业务关联数据,缺乏对数据深度理解。...更多是我们建设过程中模块化能力, 比如支付模块,可以是商品交易, 可以是游戏充值等任意需要支付功能地方 数据中台则是抽象数据能力共性形成通用数据服务能力, 关心是产出数据能力,比如产出用户画像...而随着机器学习、深度学习等技术发展, 从看似无用数据中挖掘出新价值能力也越来越强, 新技术架构为这些场景建设提供了很好能力支撑。

80720

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券