为了账号安全,请及时绑定邮箱和手机立即绑定

IF条件内部的代码应该运行还是只是评估?

IF条件内部的代码应该运行还是只是评估?

PHP
繁星淼淼 2022-08-19 10:13:20
我正在分析一些代码,并得出了其中的一部分(简化示例),其中说:if ( !do_something( 'action-one' ) ) {  do_something_else();}由于我在页面上看到了这个if语句的输出,我想“好吧,这就是为什么页面的这一部分显示。所以我把它注释掉:do_something_elseif ( !do_something( 'action-one' ) ) {  // do_something_else();}但它仍然输出相同的内容。然后我注释掉整个if语句,输出消失。所以我意识到这是在输出我意想不到的内容。do_something难道不应该只评估为真或假,特别是因为它有(期望自动类型转换)?!do_something()!这似乎是不好的做法,应该避免?
查看完整描述

2 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

要知道是真是假,你的服务器必须运行该函数(因为你要求它运行)。因此,'s 和 s 将运行并显示在您的页面上。如果你的意思是函数返回数据:它不应该出现在这个例子中(因为你没有把它发送到客户端),这将意味着发生了比我们在这里看到的更多的事情。!do_something()echoprint


如果您不想在语句中运行该函数,则应执行如下操作:if


$do_somthing_bool = do_something('action-one'); //Function runs here

    //This will still output echo's and prints but the output (return) of the function 

    // will be stored in $do_somthing_bool

if(!$do_somthing_bool) //Check if the value is false

    //Do something


查看完整回答
反对 回复 2022-08-19
?
智慧大石

TA贡献1946条经验 获得超3个赞

do_something在这种情况下不会返回布尔值,这就是为什么您获得了不同的输出


查看完整回答
反对 回复 2022-08-19
  • 2 回答
  • 0 关注
  • 142 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号