読者です 読者をやめる 読者になる 読者になる

PHPの可変長引数について

PHPで可変長な引数を処理するときはfunc_num_args()などの便利な関数があるそうです。例えばfunc_get_args()は引数リストを配列として取得するので、それを別の関数に渡してその中で処理をさせるということも簡単にできます。

というわけで、与えられた引数の中身を表示するサンプルを書いてみた。変数だけじゃなく、配列(1次元のみ)も対応しています。

<?php
class Sample {
    public function sample() {
        $this->printArg(func_get_args());
    }

    private function printArg($var) {
        $str = "";
        if (!empty($var)) {
            for ($i = 0; $i < count($var); $i++) {
                if (is_array($var[$i])) {
                    for ($j = 0; $j < count($var[$i]); $j++) {
                        $str .= "配列[".$i."][".$j."] => ".$var[$i][$j]."\n";
                    }
                } else {
                    $str .= "変数[".$i."] => ".$var[$i]."\n";
                }
            }
        }
        print_r($str);
    }
}

$s = new Sample;
$a = "abc";
$b = "ABC";
$c[0] = "あいうえお";
$c[1] = "かきくけこ";
$c[2] = "さしすせそ";
$s->sample($a, $b, $c);

実行結果

[hoge@piyo php_test]$ php check_args.php
変数[0] => abc
変数[1] => ABC
配列[2][0] => あいうえお
配列[2][1] => かきくけこ
配列[2][2] => さしすせそ

なんかいろいろできそう(小並感)