1

コンマで区切られた配列で構成される関数引数を作成する PHP で問題が発生しています。たとえば、関数の使用を自動化したいと考えていarray_intersectます。

この関数は、関数の引数としてコンマで区切られた複数の配列を受け入れます。例えば:

array_intersect($setarray1, $setarray2, $setarray3, ...)

関数で処理する数百の異なる配列がありarray_intersectます (つまり、一度に 5 つの配列のうち 3 つ、4 つを関数に渡すことができます)。

私の質問は、関数に渡すことができるカンマ区切りの配列で構成される関数引数を作成するにはどうすればよいarray_intersectですか?

これはいくつかのテストデータの例です

$setsarray[]=array('all','0'            ,'0&1','0&2','0&3');
$setsarray[]=array('all'    ,'1'        ,'0&1'            ,'1&2','1&3');
$setsarray[]=array('all'        ,'2'          ,'0&2'      ,'1&2'      ,'2&3');
$setsarray[]=array('all'            ,'3'            ,'0&3'      ,'1&3','2&3');

$setnumb=count($setsarray);

手動でこれを行うことができます...

$vennGraph['all']=array_intersect(
$setsarray[$setnumb-4],$setsarray[$setnumb-3], $setsarray[$setnumb-2]
);

関数の引数は配列コンマ配列コンマ配列などなので、 $vennGraph['Again_and_Again']=array_intersect("put my content here");を生成したいです。

私は応答を読んでいます (ありがとう!) 有望に聞こえますが、私はまだばかげています! ところで、私はPHPバージョン5.3.10を使用しています

ps 以下に示すように、$setsarray にコンマを入れた方が簡単でしょうか?

$setsarray[]=array('all','0'            ,'0&1','0&2','0&3');
$setsarray[]= ',';
$setsarray[]=array('all'    ,'1'        ,'0&1'            ,'1&2','1&3');
$setsarray[]= ',';
$setsarray[]=array('all'        ,'2'          ,'0&2'      ,'1&2'      ,'2&3');
$setsarray[]= ',';
$setsarray[]=array('all'            ,'3'            ,'0&3'      ,'1&3','2&3');
4

2 に答える 2

1

PHP のバージョンに応じて、次の 2 つの方法があります。

  1. PHP 5.6 以降でのみ可能な"..." トークン メソッド
  2. 古いバージョンの PHP 用のfunc_num_args()、func_get_arg()、および func_get_args() 関数
于 2015-03-19T07:05:39.667 に答える
0

あなたのアプローチは間違っています。配列をコンマで連結し、それらを関数に渡し、関数にそれらを個別の引数として認識させることはできません。と書くと、 にコンマがいくつあっても、 にfoo($bar)渡される引数は 1 つだけです。foo$bar

あなたが探しているのはcall_user_func_array、関数によって個別の引数として受信される配列の配列を渡すことができる です。PHP 5.6+ では、可変長の引数リストの形式で、これに関するいくつかのシンタックス シュガーが提供されています。

于 2015-03-19T07:20:46.857 に答える