[PHP5]関数に渡された引数を数える組み込み関数は?

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


関連記事

コメントを残す

メールアドレスが公開されることはありません。