假设我有一个具有以下签名的方法/函数:
foo($bar = 0)
在foo中,如何判断$bar是否设置? isset将永远返回TRUE,因为$bar被赋值为0,如果没有传递给foo.
检查0不是一个选项.我需要知道参数显式设置为0或默认为0之间的差异.
只需使用
func_num_args()来专门检查传入的参数数量.
<?PHP function foo($bar = 0) { echo "\nNumber of arguments: " . func_num_args(); } // Outputs "Number of arguments: 1" foo(0); // Outputs "Number of arguments: 0" foo(); ?>