【问题标题】:PHP - Individual array items as parameters for methodPHP - 单个数组项作为方法的参数
【发布时间】:2016-08-19 19:54:19
【问题描述】:

是否可以轻松地将数组的各个项目作为参数传递给方法?

像这样:

编辑2:

我更改了我的代码以显示“解决方案”,这个解决方案的问题是它自 PHP 4.1 起已被弃用并在 PHP 7 中被删除。

<?php
    $builder = new Builder;
    $params = array('This is number: ', 4);

    echo call_user_method_array('add', $builder, $params);

    class Builder {
        public function add($string1, $number1) {
            return $string1 . $number1;
        }
    }
?>

编辑:

我用一个简单的例子犯了一个错误。我想知道这是否可能的原因不是返回这样的字符串的函数。它是创建一个类似 MVC 的框架。解决方案必须是全方位的。

【问题讨论】:

  • 传递数组并implod 它,或者将数组元素保存在某个变量中并传递给函数
  • 试试这样:public function add($params) { return implode('',$params); }

标签: php arrays multidimensional-array methods parameters


【解决方案1】:

如果你想坚持你的通用解决方案,只需使用正确的不推荐方法:

echo call_user_func_array([$builder, 'add'], $params);

参考:callable

演示:https://3v4l.org/4VFi6

【讨论】:

    【解决方案2】:

    使用implode() 方法。

    <?php
        $builder = new Builder;
        $params = array('This is number: ', 4);
    
        echo $builder->add($params); //returns 'This is number: 4'
    
        class Builder {
            public function add($params) {
                return implode('', $params);
            }
        }
    ?>
    

    输出

    This is number: 4 
    

    查看在线演示:Click Here

    传递2个参数$params[0],$params[1]

    <?php
        $builder = new Builder;
        $params = array('This is number: ', 4);
    
        echo $builder->add($params[0],$params[1]); //returns 'This is number: 4'
    
        class Builder {
            public function add($string1 ,$number1) {
    
                return $string1 . $number1;
            }
        }
    ?>
    

    在线演示:Click Here

    【讨论】:

    • 它应该是return implode('',$params);,因为 OP 在数组值本身中添加了空间
    • 我编辑了我的帖子,我的示例代码并不是解决这个问题的唯一用例。因此,解决方案需要是全方位的。
    • 不清楚。你到底想要什么。您想在函数中传递 2 个参数吗?你的主要问题是什么?
    • 仍然面临问题?请详细描述您的问题。 @kgongonowdoe
    【解决方案3】:

    这是一个更通用的方法:

    只需将数组传递给函数并使用foreach-loop迭代

    <?php
        $builder = new Builder;
        $params = array('This is number: ', 4);
    
        $builder->add($params); //returns 'This is number: 4'
    
        class Builder {
            public function add($array) {
                foreach($array as $key => $value){
                    //Do something with your values here if you want
                    return $key . $value;
                }
            }
        }
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-08
      • 1970-01-01
      • 2020-12-27
      • 2017-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多