dongwa3808
dongwa3808
2019-04-29 21:54

是否可以将函数存储在数组中并根据if语句结果调用它们?

已采纳

I'm new using PHP, and I'm trying to store functions in an array to call them later using an if statement.

I've tried but, functions are called before if statement, so this is an example of what I need:

    function a()  {
        return 'a';
    }

    function b()  {
        return 'b';
    }

    $array = [a(), b()];

    if($condition === 'a') {
        $array[0];
    }

What I want to achieve is to use a specific function depending on if validation.

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

3条回答

  • dongyang9813 dongyang9813 2年前

    Just store the function name as a string and call call_user_func.

    function a()  {
        return 'a';
    }
    
    function b()  {
        return 'b';
    }
    
    $array = ['a', 'b'];
    
    if($condition === 'a') {
        call_user_func($array[0]);
    }
    
    点赞 评论 复制链接分享
  • dongzhao3040 dongzhao3040 2年前

    You'd either have to use call_user_func or use a anonymous function like so:

    $array = [
        function() { return 'a'; },
        function() { return 'b'; }
    ];
    
    点赞 评论 复制链接分享
  • douji0073 douji0073 2年前

    Example:

    <?php
    
    $funcArray = [
       'a' => function($in) {
          print("$in
    ");
       },
       'b' => function($in) {
          print("$in
    ");
       }
    ];
    
    foreach(array_keys($funcArray) as $key)
    {
       $funcArray[$key]($key);
    }
    
    点赞 评论 复制链接分享