PHPでは、関数に渡された引数がいくつあるかを、func_num_args()関数で取得できます。
int func_num_args( void ) |
これは、PHP5.3以降で追加された関数です。
また、下記の例のように、デフォルト引数を省略した場合はfunc_num_args()にカウントされないので注意が必要です。
test.php
<?php function add2( $a, $b ) { printf( "引数の数は:%d\n", func_num_args() ); return $a + $b; } function add3( $a, $b, $c ) { printf( "引数の数は:%d\n", func_num_args() ); return $a + $b + $c; } function add4( $a, $b, $c, $d = 0 ) { printf( "引数の数は:%d\n", func_num_args() ); return $a + $b + $c + $d; } add2( 10, 20 ); add3( 10, 20, 30 ); add4( 10, 20, 30 ); # add4()を呼んでいるがこれは3が返される add4( 10, 20, 30, 40 ); |
実行結果
# php test.php 引数の数は:2 引数の数は:3 引数の数は:3 引数の数は:4 |
また、N個目の変数を取得するfunc_get_arg()関数と組み合わせると、可変の引数を持つPHP関数を作成できます。
以下にこのパターンのサンプルを示します。
test.php
<?php function addAll() { $ans = 0; $cnt = func_num_args(); // 渡された引数をすべて加算する for ($i = 0; $i < $cnt; $i++) { $ans += func_get_arg($i); } return $ans; } printf( "2パラメータの加算: %d\n", addAll( 1, 2 ) ); printf( "3パラメータの加算: %d\n", addAll( 10, 20, 30 ) ); |
実行結果
# php test.php 2パラメータの加算: 3 3パラメータの加算: 60 |
関連記事
コメントを残す