gpt4 book ai didi

PHP:包含错误处理

转载 作者:搜寻专家 更新时间:2023-10-31 20:59:53 25 4
gpt4 key购买 nike

$file= @fopen("ssssss.php", r) or die("not found");
(@include("ssssss.php")) or die("not found");

在第一个语句中,我们没有将 ( ) 放在 @fopen 周围,它工作正常。但是在第二个中,如果我没有放置这些 (),它不会显示任何消息。

那么为什么对于 include 我必须用 ( ) 将它四舍五入?

最佳答案

我同意其他答案中的建议,但您问题的实际答案是这样的:

在 PHP 文档中,他们说在比较 include 的返回值时要小心。

那是因为它是一个特殊的结构,不需要括号。

所以当你这样做时(不带括号):

@include("ssssss.php") or die("not found");

你实际上是这样做的,因为 or 首先被评估:

@include (("ssssss.php") or die("not found"));

现在,“ssssss.php”是一个非空字符串,逻辑上计算为真。

or 是一个逻辑运算符,如果任何参数为真(或两者都为真)则返回真。此外,此运算符是短路的:如果第一个参数为真,php 已经知道运算符 or 将返回 true,因此它不会浪费时间计算第二个参数,而 die() 未执行。

最后,or 给出 true,你的句子变成了这样:

@include (1);

Php 尝试“包含 1”,它会发出警告,但由于 @ 而不会发出警告。

这里有一个 similar example in php.net .


你的第一句话不是同一个案例。

$file= @fopen("ssssss.php", r) or die("not found");

fopen 只是一个带有括号的常规 Php 函数。在这里您需要记住两个运算符:=or

=higher precedence而不是 ,因此,如果 fopen 的结果正确分配给 $file(确实如此),该操作将返回 true。而且,正如我之前解释的那样,“true or anything”给出 true 但 die() 由于短路运算符而未执行。

关于PHP:包含错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45420320/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com