在 php 中解压参数数组

发布于 2024-07-08 07:21:44 字数 293 浏览 8 评论 0原文

Python 提供了“*”运算符来解压元组列表并将它们作为参数提供给函数,如下所示:

args = [3, 6]
range(*args)            # call with arguments unpacked from a list

这相当于:

range(3, 6)

有谁知道是否有办法在 PHP 中实现此目的? 谷歌搜索“PHP Unpack”的变体并没有立即找到任何东西..也许它在 PHP 中被称为不同的东西?

Python provides the "*" operator for unpacking a list of tuples and giving them to a function as arguments, like so:

args = [3, 6]
range(*args)            # call with arguments unpacked from a list

This is equivalent to:

range(3, 6)

Does anyone know if there is a way to achieve this in PHP? Some googling for variations of "PHP Unpack" hasn't immediately turned up anything.. perhaps it's called something different in PHP?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

最笨的告白 2024-07-15 07:21:44

在 php5.6 中 添加了通过 ...(splat 运算符)解包参数。 使用它,您可以摆脱 call_user_func_array() 这个更简单的替代方案。 例如有一个函数:

function add($a, $b){
  return $a + $b;
}

使用你的数组$list = [4, 6];(在php5.5之后你可以用这种方式声明数组)。

您可以使用 ... 调用您的函数:

echo add(...$list);

In php5.6 Argument unpacking via ... (splat operator) has been added. Using it, you can get rid of call_user_func_array() for this simpler alternative. For example having a function:

function add($a, $b){
  return $a + $b;
}

With your array $list = [4, 6]; (after php5.5 you can declare arrays in this way).

You can call your function with ...:

echo add(...$list);
唯憾梦倾城 2024-07-15 07:21:44

您可以使用 call_user_func_array() 来实现:

call_user_func_array(" range", $args); 使用您的示例。

You can use call_user_func_array() to achieve that:

call_user_func_array("range", $args); to use your example.

束缚m 2024-07-15 07:21:44

在某些情况下,您可能会考虑使用 unpacking,这在 php 中是可能的,与 python 类似:

list($min, $max) = [3, 6];
range($min, $max);

这至少是我得出这个答案的方式。
Google 搜索:PHP 参数解包

In certain scenarios, you might consider using unpacking, which is possible in php, is a similar way to python:

list($min, $max) = [3, 6];
range($min, $max);

This is how I have arrived to this answer at least.
Google search: PHP argument unpacking

別甾虛僞 2024-07-15 07:21:44

您应该使用 call_user_func_array

call_user_func_array(array(CLASS, METHOD), array(arg1, arg2, ....))

http://www.php.net/call_user_func_array

或使用反射 api < a href="http://www.php.net/oop5.reflection" rel="nofollow noreferrer">http://www.php.net/oop5.reflection

You should use the call_user_func_array

call_user_func_array(array(CLASS, METHOD), array(arg1, arg2, ....))

http://www.php.net/call_user_func_array

or use the reflection api http://www.php.net/oop5.reflection

季末如歌 2024-07-15 07:21:44
<?php

function add(int ...$arr) {           // typehint ready
    return array_sum($arr);
}

var_dump(add(1, 2, 3, ...[1, 2, 3])); // int(12)

另一个带有 ... - 运算符的示例。
RFC:https://wiki.php.net/rfc/variadics

<?php

function add(int ...$arr) {           // typehint ready
    return array_sum($arr);
}

var_dump(add(1, 2, 3, ...[1, 2, 3])); // int(12)

Another example with ... - operator.
RFC: https://wiki.php.net/rfc/variadics

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文