ある1つの関数で、単一の値でも、複数の値でも受け取りたいというニーズは割とあると思います。 対象が1個なら、可変長引数 ... や func_get_args() の方が楽ですが、2個以上になると、それぞれちゃんとお世話しなければいけません。 例えば私は、以下のように書いてました。 function hoge($fuga, $piyo) { // 配列じゃなかったら配列にする if (!is_array($fuga)) $fuga = [$fuga]; if (!is_array($piyo)) $piyo = [$piyo]; foreach($fuga as $f) { foreach($piyo as $p) { print "$f <-> $p\n"; } } } hoge(1, 1); // "1 <-> 1" hoge(1, [1, 2, 3]); // "1 <-> 1",