【问题标题】:how to expand an array elements as separate parameters to a function如何将数组元素扩展为函数的单独参数
【发布时间】:2011-06-28 23:00:21
【问题描述】:

我有一组具有动态值的颜色,这取决于数据库。现在这些值在一个函数中是必需的,它只接受像这个函数这样的值('para1','para2','para3','para4') 其中 param1 到 param4 是数组中的颜色值。 问题是如何以上述格式将这些值解析为该函数。仅需要编程逻辑。语言是 php。

假设动态数组为 color[]=('red','maroon','blue','green'); 并且这些值应该传递给这个函数,比如 :setLineColor('red','maroon','blue','green');

我正在使用这个函数来创建图表。(使用 PHP_graphlib 的库:链接:http://www.ebrueggeman.com/phpgraphlib/documentation.php) 欢迎任何其他建议的库。请提供一个简单的示例。

【问题讨论】:

    标签: php arrays function graph


    【解决方案1】:

    从 PHP 5.6 开始,您可以将 argument unpacking 与三点运算符一起使用:

    setLineColor(...$colors);
    

    【讨论】:

    • 非常好,像call_user_func_array 那样在眼睛上更容易,而且也很实用,如果你想将“固定”参数与fprintf(STDOUT, $format,...$args) 等数组结合起来
    【解决方案2】:

    您可以使用函数call_user_func_array

    <?php
    $colors = array('red','maroon','blue','green');
    call_user_func_array('setLineColor', $colors);
    ?>
    

    如果你想调用一个对象的方法,你可以用这个来代替:

    <?php
    $graph = new ...
    $colors = array('red','maroon','blue','green');
    call_user_func_array(array($graph, 'setLineColor'), $colors);
    ?>
    

    【讨论】:

    • 是的 enrico...感谢您的果味回应..对不起,我没有提到它是某个库的方法。
    【解决方案3】:
    function($color[0], $color[1], $color[2], $color[3])
    

    【讨论】:

    • 最差的答案....我想你没有读到那是颜色值不固定..它们因数据库值而异...
    • 我知道它们不是固定的——这就是我引用包含动态值的数组的原因。
    • 如果你事先不知道值的数量,这个答案是行不通的。如果数组有 500 个值,这也是一个糟糕的解决方案。
    • 谢谢安德鲁,但这不是原始问题的一部分
    • 我同意亚当的观点。在这个问题中,参数的数量是已知的。所以这是最好的答案。这种情况下不需要调用“call_user_func_array”。
    猜你喜欢
    • 1970-01-01
    • 2010-10-15
    • 2010-12-31
    • 1970-01-01
    相关资源
    最近更新 更多