【问题标题】:Passing parameters in a function inside another function? [duplicate]在另一个函数内部的函数中传递参数? [复制]
【发布时间】:2024-01-14 23:05:02
【问题描述】:

我正在寻求帮助

是否可以在 php 中的另一个函数中设置带有参数/参数的函数?这里我有一个理论上的例子。

<?php

// Function with parameter/s
function funcOne($arg) {
    return $arg;
}

// Parameter/s inside another function.. Possible!?
function funcTwo() {
    return funcOne($arg);
}

当我尝试像这样设置参数时

funcOne('Alex');
echo funcTwo();

我收到以下通知错误

Notice: Undefined variable: arg in...

提前致谢:)

【问题讨论】:

  • 你只需要调用第二个函数,但是函数还需要获取参数来调用第一个函数。
  • funcTwo() 不知道 $arg,它不在它的变量范围内,对 is 不可见。
  • 感谢@Rizier123 的回答。这解决了我的疑问。 :)
  • 给你详细的解答,供你理解。使用面向对象的概念。关注更多关于变量的作用域

标签: php function parameter-passing


【解决方案1】:
// Function with parameter/s
function funcOne($arg) {
    return $arg;
}

// Parameter/s inside another function.. Possible!?
function funcTwo() {
    return funcOne($arg);
}

funcOne('Alex');
//Call is made to function one which returned an ARG.

注意这里的函数只是返回了 arg 并忘记了它,现在该参数没有存储在哪里可以使用

//Now here inside the functionTwo scope $arg is never defined.
echo funcTwo();

您可以使用类和对象执行以下操作

class MyClass {

    public $classarg;

    public function funcOne($arg) {
        $this->classarg = $arg; //assigned the argument to a class variable
    }

    function funcTwo() {
        return $this->classarg; //using the class variable to test
    }

}

$myobj = new MyClass();
$myobj->funcOne('Alex');
echo $myobj->funcTwo()

你也可以使用全局变量来实现你想要的,但我不建议使用它,因为面向对象编程是我们应该使用的未来

【讨论】:

  • 感谢@Dharam 的精彩解释。我很感激! :)
【解决方案2】:

funcOne('Alex')不是设置参数,而是调用函数funcOne()。 当funcOne($arg) 执行时,它会将参数$arg 返回给调用者。 echo funcOne('Alex') 将回显Alex,因为这是返回的值。 返回后,funcOne 不再了解 'Alex'。

当你调用funcTwo()时,它会执行funcOne($arg),但是$arg没有被定义:它没有被赋值。

【讨论】:

  • 感谢@PaulH 的提示 :)
  • 对不起,我没有足够的声誉来做这件事!
【解决方案3】:
function funcTwo($arg) {
    return funcOne($arg);
}

请注意,在制作函数之前,您应该学会使用变量。

【讨论】:

  • 感谢朱莉的帮助。是的,我会的:)