Вы можете проверить, какие значения были предоставлены, используя func_get_args()
. Однако я должен согласиться с комментариями о том, что такой подход не имеет смысла.
function func($a = 2) {
var_dump($a, func_get_args());
}
func();
func_get_args()
возвращает только те аргументы, которые были переданы при вызове функции, но не установлены значениями по умолчанию.
В вашем случае было бы более целесообразно сделать второй параметр обнуляемым, а затем иметь комплексные логические значения c внутри тела функции.
function our_round(float $value, ?int $decimal = null) {
if (null === $decimal && $value < 0) {
$decimal = 9; // default
} else {
// need this logic to code here.
// keep 6 if 6 provided by provider
$decimal = 6;
}
return round($value, $decimal);
}
Я бы порекомендовал взять лист бумаги и дроу какая-то таблица правды возможных вариантов. Если вы просто хотите назначить значение по умолчанию простым способом, вы можете использовать троичный оператор.
function our_round(float $value, ?int $decimal = null) {
// assign default value
$decimal ??= $value < 0 ? 9 : 6;
return round($value, $decimal);
}