【问题标题】:(N is unknown) $controller->$action($param1, $param2, $param3... $paramN);(N 未知) $controller->$action($param1, $param2, $param3... $paramN);
【发布时间】:2010-10-26 00:18:00
【问题描述】:

(N 未知)

$controller->$action($params);

必须

$controller->$action($param1, $param2, $param3... $paramN);

【问题讨论】:

  • 如果您能多描述一下您的问题会很有帮助。

标签: php arrays parameters methods call


【解决方案1】:

PHP 使用非常灵活的数组。您可以将任何数据类型放入其中。这消除了对 N 个参数的需要。只需使用数组作为参数并循环遍历所有元素(参数)。

如果您使用混合类型作为参数,您可以在循环中使用 gettype($var) 函数检查变量的类型。

<?php
    $params = Array($param1, $param2, $paramN);
    $controller->$action($params)
?>

【讨论】:

    【解决方案2】:

    不太确定你想要什么,但如果你想调用一个参数数量未知的方法,你可以使用call_user_func_array()

    例如:

    $result = call_user_func_array(array($controller, $action), $params);
    

    给定一个数组,如:

    array(1, 2, 'a');
    

    相当于这样:

    $result = $controller->$action(1, 2, 'a');
    

    您可以通过执行以下操作来构建这样的数组,但我认为首先使用数组会更好

    $param1 = 'Something';
    $param2 = 'Test';
    
    $j = 1;
    $params = array();
    while (isset(${'param' . $j})) {
        $params[] = ${'param' . $j};
        $j++;
    }
    
    print_r($params);
    
    //will output
    Array
    (
        [0] => Something
        [1] => Test
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-03
      • 2013-05-10
      • 1970-01-01
      • 2021-11-01
      • 2015-01-13
      • 1970-01-01
      • 2021-06-16
      • 2010-12-29
      相关资源
      最近更新 更多