php - 为什么 if 块内的变量是空的,但在它之外有一个值?
问题描述
我发现了一些我无法解释的东西。$post_id
设置为9
,$bookmarks
是一个包含在其中的数组[5] => true
。如果我移出die($post_id)
这个块并且我将它放在之前或之后都没有关系,将包含但在块内它既没有类型也没有值。这怎么可能?$post_id
9
if ( !array_key_exists($post_id, $bookmarks) ) {
$bookmarks[$post_id] = true;
die($post_id);
}
UPD:我已经编辑了代码,它现在不应该让你感到困惑。
解决方案
die()
与 PHP Manual相同exit()
并且根据 PHP Manual,exit()
有两种不同的行为:
void exit ([ string $status ] )
void exit ( int $status )
它解释说:
如果 status 是一个字符串,这个函数在退出之前打印状态。
如果 status 是一个整数,则该值将用作退出状态而不打印。退出状态应在 0 到 254 的范围内,退出状态 255 由 PHP 保留,不得使用。状态 0 用于成功终止程序。
所以作为$post_id
一个整数,die($post_id)
实际上不会打印任何内容,而只会修改进程的退出代码。
您可以die()
通过将其重新转换为字符串来打印一个数字:
die(strval($post_id));
推荐阅读
- html - 如何使有序列表内的列表项在一个圆圈内?
- google-apps-script - Google Apps 脚本弹出对话框,库问题
- arrays - Swift:序列化一个 jsonObject 字典数组
- ios - 为什么每次点击搜索栏时导航栏都会消失?
- java - 坚持试图让这个程序工作。(Java新手,习惯了python。)
- mysql - 如何在mysql中将查找表值插入json/json数组/json格式并通过从json中查询值来检索数据键:值对
- redux-saga - 您如何从另一个动作中的动作获得结果?
- java - Java 异常变量
- spring-boot - Oauth2 Okta open Id 实现 spring boot 1.5
- javascript - 如何通过使其更灵活来重用功能