【问题标题】:How to pass a variable number of parameters to a function in PHP如何将可变数量的参数传递给PHP中的函数
【发布时间】:2011-03-23 08:04:51
【问题描述】:

我有这个多维数组(称为 $values):

Array
(
    [0] => Array
        (
            [0] => 5
            [1] => 2
            [2] => 5
            [3] => 6
        )

    [1] => Array
        (
            [0] => 3
            [1] => 4
            [2] => 5
            [3] => 6
        )

    [2] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 4
            [3] => 5
        )

    [3] => Array
        (
            [0] => 9
            [1] => 5
            [2] => 3
            [3] => 2
        )
)

我想使用array_diff PHP 函数计算这个多维数组的每个元素(数组)之间的diff。我想到的第一件事是将多维数组拆分为单个数组:

for($cnt = 0; $cnt < count($values); $cnt++){
        for($cntB = 0; $cntB < 4; $cntB++){
            ${'arr'.$cnt}[] = $values[$cnt][$cntB];
        }
    }

在此之后,我有几个名为$arr1$arr2 等的数组。由于数组$values 的维度可能会有所不同(并且会有所不同),我找不到将所有生成的单个数组传递给函数array_diff 的方法,

有什么想法吗?

提前致谢。

【问题讨论】:

  • 变量变量 (${'arr'.$cnt}) 在这种情况下是个坏主意。
  • 也许我很密集,但我不明白你期望的输出是什么,你能详细说明一下吗?如果您只想要$array[0] 中不在任何其他项目中的项目列表(即array_diff),请查看我的答案。

标签: php arrays function


【解决方案1】:

不确定这是否是您想要的,因为我没有阅读所有内容,但请查看:

call_user_func_array('array_diff', $values)

也许这就是你想要的。

【讨论】:

  • 这是我需要的。谢谢。
【解决方案2】:
function diff() {
    $args = func_get_args();

    // $args how has all the arrays you passed in.
}

【讨论】:

    【解决方案3】:

    代替

    ${'arr'.$cnt}[] = ...
    

    使用

    $arr[$cnt][] = ...
    

    问题解决了。 :)

    当您真正需要的是一个数组时,就不需要可变变量了。

    【讨论】:

    • 我同意,但是整个循环不就是 $arr = $values 的简写吗?
    • @konf 既然你提到它,它就是。 :)
    猜你喜欢
    • 2010-11-28
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 2015-09-23
    • 2017-09-28
    • 2016-04-01
    • 2019-01-17
    • 1970-01-01
    相关资源
    最近更新 更多