$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' );
現在的問題是,我不知道$result裡面有多少數組,有可能a-d,有可能只有a和d。
那array_intersect_ukey函數也要動態根據此動態傳入參數。
比如只有a和d
array_intersect_ukey( $result['a'], $result['d'], 'test' );
比如只有a,c和d
array_intersect_ukey( $result['a'], $result['c'], $result['d'], 'test' );
要如何?這種動態傳入參數呢?或者有沒有其他的實現方法?
回複內容:
$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' );
現在的問題是,我不知道$result裡面有多少數組,有可能a-d,有可能只有a和d。
那array_intersect_ukey函數也要動態根據此動態傳入參數。
比如只有a和d
array_intersect_ukey( $result['a'], $result['d'], 'test' );
比如只有a,c和d
array_intersect_ukey( $result['a'], $result['c'], $result['d'], 'test' );
要如何?這種動態傳入參數呢?或者有沒有其他的實現方法?
我沒怎麼細看樓主的問題,不過我告訴樓主兩個點,我敢肯定是能解決樓主所描述的問題:
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