【问题标题】:Why is the foo() function executed while not having been called?为什么 foo() 函数在没有被调用的情况下被执行?
【发布时间】:2021-10-22 16:21:26
【问题描述】:

我对 PHP 有点陌生,所以请原谅我的问题很简单,以防万一, 我有一个总是返回 true 的函数 foo(),现在我的问题是,虽然我只检查了 truefoo() 并且没有直接调用 foo() 函数,但它怎么可能执行呢? 是只有 PHP 是这样,还是在 JavaScript 中也是一样的说法?

 $x = 10;
function foo() {
    global $x;
    if($x = 10) {
        return true;
    }
    return false;
}

if(foo()) {
    echo 'Done foo() function!';
} else {
    echo 'Not done foo() function...';
}

【问题讨论】:

  • $nextFoo = foo(); ... 执行函数。你期待什么?
  • fyi,if($x = 10) { 分配一个值,使用 ===== 比较值。如果你在你的函数之外设置$x = 12;,它也将return true
  • 不要更改您的问题,添加任何更改。代码现在会给你一个“警告:未定义的变量 $foo...”,$foo 没有在任何地方设置
  • 请停止如此大幅度地更改代码。您正在使 cmets 和答案变得过时。
  • if(foo()) { 执行函数,可能想找到关于 PHP/函数如何工作的基本教程,所以是针对特定的编码问题,而不是教授基础知识

标签: php function if-statement execute


【解决方案1】:

你确实在 if(foo()) 这一行中调用了 foo。本质上,您在这一行中所做的称为foo,并使用if 检查其返回值。如果你想检查foo函数是否被执行,你可以保留一个标志作为全局变量,并在函数中将它设置为true

$foo_executed = false;
function foo (){
    global $foo_executed;
    // your code here
    $foo_executed = true;
}

//execute foo
foo();
if ($foo_executed){
   echo "foo executed";
}

这种行为在其他编程语言中也很常见。您可以按照本教程了解有关函数的更多信息。祝你好运!

https://www.youtube.com/watch?v=HvxQww-7NGA

【讨论】:

  • 此答案现已过时,因为 $nextFoo = foo(); 现已从问题中删除
  • 此代码不会输出任何内容。这个函数是干什么用的?
猜你喜欢
  • 2012-02-02
  • 1970-01-01
  • 1970-01-01
  • 2013-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-30
相关资源
最近更新 更多