関数にパラメータを送信する必要があります
array_intersect_key()
ただし、2つの配列を送信する必要がある場合もあれば、3つ以上の配列を送信する必要がある場合もあります。
array_intersect_key($arr_1, $arr_2);
OR
array_intersect_key($arr_1, $arr_2, $arr_3, $arr_4);
このような独自の関数を作成したい場合、重要なのは次を使用することfunc_get_args()
です。
function mumble(){
$args = func_get_args();
foreach ($args as $arg){
... whatever
}
}
複数の引数を使用して呼び出したい場合は、「実行する」か、次を使用しますcall_user_func_array()
。
$args = array();
... append args to $args
call_user_func_array('array_intersect_key', $args);
call_user_func_array('foo', array('foo', 'bar', 'foo N'));
function foo($param1, $param2, $paramN) {
// TADÁÁÁ
}
これを処理するためのfunc_get_args()メソッドを調べてください。何かのようなもの:
function my_function() {
$numArgs=func_num_args();
if($numArgs>0) {
$argList=func_get_args();
for($i=0;$i<$numArgs;$i++) {
// Do stuff with the argument here
$currentArg=$argList[$i];
}
}
}
標準機能について質問する前に、まずhttp://php.netサイトを参照してください。ここで、すべての質問に答えることができます。
http://php.net/manual/en/function.array-intersect-key.php
http://php.net/manual/en/function.func-get-args.php
http://php.net/manual/en/ref.funchand.php
私はあなたの質問を得ました、ここにあなたがそれをすることができる1つの方法があります:
$arr_of_arr = array($arr1, $arr2, $arr3, ..., $arrn);
また
$arr_of_arr = func_get_args();
if(count($arr_of_arr) > 1){
for($i = 0; $i < count($arr_of_arr) - 1; $i++){
if(! $i){
$intersec = array_intersect_key($arr_of_arr[0], $arr_of_arr[1]);
$i = 2;
}
else{
$intersec = array_intersect_key($intersec, $arr_of_arr[$i++]);
}
}
}
$intersec
これで交差点が含まれます。
function foo()
{
$numargs = func_num_args();
echo "Number of arguments: $numargs<br />";
$arg_list = func_get_args();
foreach($arg_list as $arg) {
if(is_array($arg)) print_r($arg)."<br />";
else echo "<br />".$arg;
}
}
foo(array(1,2,3), 2, 3);
にはarray_intersect_key
、複数の入力を許可するプロトタイプがすでにあります。
array array_intersect_key ( array $array1 , array $array2 [, array $ ... ] )
ですから、私はそこで問題を実際には見ていません。