假设我有一个具有以下签名的方法/函数:
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();
?>
Live example
