2016-07-05 5 views
1

PHPでは、通常、定義されたよりも多くのパラメータを持つ関数を呼び出すことができます。多くのパラメータを定義されている関数に渡すことを禁止します

function f($a, $b) { 
    return $a . $b; 
} 
f('a', 'b', 'c', 'e'); 

は完全に有効です。

可変数のパラメータで関数を定義することができると私は理解します。しかし、ほとんどの場合、それはあなたがしたいことではありません。 この場合、.を間違って,に置き換えても、警告を受け取ることはありません。

$x = '0'; 
f('a' , 'b' . $x . 'c') // returns ab0c 
f('a' , 'b' , $x . 'c') // returns ab 

PHP 7では、function f($a, $b, ...$others)という構文があります。したがって、原理的には、可変パラメータ関数を通常の関数と区別することが可能です。

パラメータが多すぎる関数が呼び出されたときに通知する方法はありますか?

答えて

1

あなたの関数に送信された変数を実際に数える方法がありますが、これは関数の中でINSERTするか、または送信された項目を数えて関数の前でしか行うことができません。

詳細については、http://php.net/manual/en/function.func-num-args.phpを参照してください。

http://php.net/manual/en/function.func-get-args.phpを使用して、関数に送信された現在の引数を取得することもできます。

function(){ 
    $count = func_num_args(); 
    if($count > 3){ 
     //too many args 
    } 
    else{ 
     //continue your actual code 
    } 
} 

あなたの問題は、しかし、このようなものが必要になります

関連する問題