首页 > 解决方案 > 为什么 if 块内的变量是空的,但在它之外有一个值?

问题描述

我发现了一些我无法解释的东西。$post_id设置为9,$bookmarks是一个包含在其中的数组[5] => true。如果我移出die($post_id)这个块并且我将它放在之前或之后都没有关系,将包含但在块内它既没有类型也没有值。这怎么可能?$post_id9

if ( !array_key_exists($post_id, $bookmarks) ) {
    $bookmarks[$post_id] = true;
    die($post_id);
}

UPD:我已经编辑了代码,它现在不应该让你感到困惑。

标签: phparraysif-statementlogicconditional

解决方案


die()与 PHP Manual相同exit()并且根据 PHP Manualexit()有两种不同的行为:

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));

推荐阅读