【问题标题】:How to return a function by another function如何通过另一个函数返回一个函数
【发布时间】:2011-07-14 02:21:55
【问题描述】:

我打算创建一个检查器函数,它将被其他函数使用。这个想法很简单:如果条件不满足,则通过返回来停止函数。

这是原始代码:

function awesome(){ 
    $a = "2";
    if ($a != "1"){return;} 
    echo "awesome"; 
}

成功了。因为 $a 是 2,所以函数被返回,“awesome”这个词没有出现。但是,有几个功能需要检查。为了避免重复,我是这样写的:

function test($var){
    if ($var != "1"){return;}
}

function awesome(){
    test("2");
    echo "awesome";
}

function awesomeagain(){
    test("3");
    echo "awesome";
}

但是出现了“awesome”这个词,并且没有返回awesome()和awesomeagain()这两个函数。如何通过添加 test() 函数返回这两个?

谢谢。非常感谢您的帮助。

【问题讨论】:

  • 感谢编辑。我真的是新来的,仍然对格式感到困惑。

标签: php wordpress function return


【解决方案1】:

您的test 函数必须返回一个值,并且您必须在其他函数中测试该值。像这样的:

function test($var) {
  if ($var != "1")
    return false;
  else
    return true;
}

所以,你的代码应该是这样的:

function awesome() {
  if (test("2"))
    echo "awesome";
}

但是,如果您想进行检查,您可以抛出异常。这应该是这样的:

function test($var) {
  if ($var != "1")
    throw new Exception();
}

在其他功能中使用

function awesome() {
  try {
    test("2");
    echo "yeah";
  } catch ($e) {}      
}

【讨论】:

  • 哇,谢谢! 'test()' 有效,但我对'awesome()' 做了一些修改,所以代码如下:'if (test("2") == true)' 那么它就像一个魅力:D
  • 在 php 中好的做法是检查值和类型,所以使用 if (test("2") === true),因为在 php 中这将返回 true ("2" == true) , 但 ("2" === true) 将返回 false。
【解决方案2】:
function test( $var ) {
    return ( $var == "1" );
}

function awesome() {
    if ( test("2") ) {
        echo "awesome";
    }
}

function awesomeagain(){
    if ( test("3") ) {
        echo "awesome";
    }
}

Fikry,尝试重新学习conditional的概念,这是基本的编程技巧。没有它,您将编写许多错误的代码和功能。

【讨论】:

    【解决方案3】:

    要从函数返回,您必须使用 return 关键字

    function test($var){
        if ($var == "1"){
            return TRUE;
        }
    }
    
    function awesome(){
        if (!test("2")){
            return FALSE;
        }
        echo "awesome";
        return TRUE;
    }
    

    【讨论】:

      【解决方案4】:

      f您可能不应该依赖另一个函数来阻止另一个函数表单的运行。试试这个

      function test($var){
          if ($var != "1"){return false;} return true;
      }
      
      function awesome(){
          if(test("2"))
          echo "awesome";
      }
      
      function awesomeagain(){
          if(test("3"));
          echo "awesome";
      }
      

      【讨论】:

      • 感谢您的回复,它与之前的回复非常相似,并且进行了非常小的修改:D
      【解决方案5】:
      function test($var) {
          if ($var != "1"){
              return "awesome";
          }
          // do something else when $var is not "1" here.
      }
      function awesome(){
          echo test("2");
      }
      function awesomeagain(){
          echo test("3");
      }
      

      就是这样! PHP 太棒了! :)

      【讨论】:

      • hmm.. 我不这样做,因为这些动作将放在 awesome() 和 awesomeagain() 上,而这些动作是不同的。顺便说一句,是的 PHP 很棒。感谢您的回复:D
      猜你喜欢
      • 2016-09-02
      • 2021-07-03
      • 2012-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多