为什么传递给die()的整数参数没有打印?

时间:2017-10-26 18:21:00

标签: php

为什么我会从60获得die()的输出:

$min = $row['min'];
die($min);

但不是为了这个?

$min = $row['min']*60;
die($min);

3 个答案:

答案 0 :(得分:2)

这是因为您应该传递一个字符串:“必需。指定在退出脚本之前要写入的消息或状态编号。状态编号不会写入输出。” 相乘后,将值转换为int类型,因此die不会打印它。

答案 1 :(得分:2)

<强>解决方案

如果您需要该值即使它是一个数字,请使用strval将其解析为字符串:

die(strval($min));

<强>文档

根据die等同于退出

Exit中我们可以看到它有两个签名:

void exit ( int $status )

void exit ([ string $status ] )

两者都描述如下:

  

如果状态为整数,则该值将用作退出状态   而不是印刷。退出状态应该在0到254的范围内   退出状态255由PHP保留,不得使用。状态0   用于成功终止程序。

  

如果状态为字符串,则此函数会在退出之前打印状态。

(强调我的)

<强>诠

在您提问的第一个代码示例中,$row['min']很可能只是一个字符串(例如string(2) "70")。当你将它乘以一个数字时,PHP&#39; casts&#39;数字的值,因此可以乘以。

因此,在第一个示例中,它调用exit ([ string $status ] )函数,在退出之前打印状态。 在第二个示例中,它调用exit ( int $status )函数,将用作退出状态而不打印。

如果您想亲自查看,请使用var_dump并检查变量类型。 Check an Example

答案 2 :(得分:1)

die()函数是exit()的别名。

PHP的文档说明exit()polymorphic。也就是说,它可以接受字符串或整数作为唯一的参数。

提供字符串时,会在脚本退出之前打印。

当您提供一个整数(0-254之间)时,它将用作脚本exit status code并且不会打印任何内容。代码0表示脚本成功完成,其他任何内容都是错误。代码255由PHP保留。

您可以使用strval()intval()来确保传递正确的数据类型以满足您的需求。