Heim  >  Artikel  >  Backend-Entwicklung  >  PHP动态参数

PHP动态参数

WBOY
WBOYOriginal
2016-06-06 20:17:241931Durchsuche

<code class="php">$result = [
    'a'=>[1,2],
    'b'=>[1,2],
    'c'=>[1,2],
    'd'=>[1,2],
]
array_intersect_ukey(
                    $result['a'],
                    $result['b'],
                    $result['c'],
                    $result['d'],
                    'test'
                    );</code>

现在的问题是,我不知道$result里面有多少数组,有可能a-d,有可能只有a和d。

那array_intersect_ukey函数也要动态根据此动态的传入参数。
比如只有a和d

<code class="php">array_intersect_ukey(
                    $result['a'],
                    $result['d'],
                    'test'
                    );</code>

比如只有a,c和d

<code class="php">array_intersect_ukey(
                    $result['a'],
                    $result['c'],
                    $result['d'],
                    'test'
                    );</code>

要如何实现这种动态传入参数呢?或者有没有其他的实现方法?

回复内容:

<code class="php">$result = [
    'a'=>[1,2],
    'b'=>[1,2],
    'c'=>[1,2],
    'd'=>[1,2],
]
array_intersect_ukey(
                    $result['a'],
                    $result['b'],
                    $result['c'],
                    $result['d'],
                    'test'
                    );</code>

现在的问题是,我不知道$result里面有多少数组,有可能a-d,有可能只有a和d。

那array_intersect_ukey函数也要动态根据此动态的传入参数。
比如只有a和d

<code class="php">array_intersect_ukey(
                    $result['a'],
                    $result['d'],
                    'test'
                    );</code>

比如只有a,c和d

<code class="php">array_intersect_ukey(
                    $result['a'],
                    $result['c'],
                    $result['d'],
                    'test'
                    );</code>

要如何实现这种动态传入参数呢?或者有没有其他的实现方法?

我没怎么细看楼主的问题,不过我告诉楼主两个点,我敢肯定是能解决楼主所描述的问题:

1.留意一个叫做call_user_func_array()的函数
http://php.net/manual/zh/function.call-user-func-array.php
2.这个可能不如1重要,但是还要提一下吧:
func_num_args(); //输出参数个数
func_get_args; //获取参数,返回参数数组
3.既然参数个数以及名称不确定,那么,可以通过1中函数向某个函数传参,记得参数用数组方式,数组可以让你传各种各样的参数

楼主的问题,应该可以的到解决.

回来又仔细看了一下楼主的问题,没错,call_user_func_array可以是帮助你。

可以递归或循环调用。

根据A ∩ B ∩ C = ( A ∩ B ) ∩ C,第一次计算头两个数组的交集,然再用第一次计算的结果和第三个数组(如果有的话)计算交集,以此类推。

我以前问过类似的问题 https://segmentfault.com/q/1010000004290664

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn