Symfony中被称为“进阶array_merge()”的函数名称是什么?
你要找的函数是
filter_var_array() 你描述的具备数组合并+类型检查功能、作为array_merge()进阶用法的函数,是PHP原生的filter_var_array()。
它可以通过在过滤器规则中指定默认值,同时实现“合并用户参数与默认参数”和“类型校验”的需求,对应你示例的用法可以改写为:
function doSomething ($params) { $p = filter_var_array($params, [ 'foo' => [ 'filter' => FILTER_VALIDATE_BOOLEAN, 'default' => false, ], 'bar' => [ 'filter' => FILTER_VALIDATE_INT, 'default' => 1, ], ]); }
如果要严格对应你示例中“三个参数”的调用形式,也可以基于filter_var_array()封装一个自定义函数:
function mergeAndValidate($userParams, $defaultParams, $typeRules) { // 先合并用户参数与默认参数,用户参数优先级更高 $combined = array_merge($defaultParams, $userParams); // 应用类型校验 return filter_var_array($combined, $typeRules); } // 使用方式和你示例一致 function doSomething ($params) { $defaultParams = [ 'foo' => false, 'bar' => 1, ]; $p = mergeAndValidate($params, $defaultParams, [ 'foo' => FILTER_VALIDATE_BOOLEAN, 'bar' => FILTER_VALIDATE_INT ]); }
filter_var_array()支持多种内置过滤器(比如布尔值、整数、邮箱、URL等),完全满足你说的“简单类型检查”需求。
内容的提问来源于stack exchange,提问作者Ser5
相关产品推荐
相关产品推荐

