Php 寻找更好的多类型验证
我需要检查变量是否为指定的标量类型-但我不能使用像is_scalar这样的常规函数-因为这也会接受我不想接受的类型(该类型) 可以逐步检查类型:Php 寻找更好的多类型验证,php,validation,Php,Validation,我需要检查变量是否为指定的标量类型-但我不能使用像is_scalar这样的常规函数-因为这也会接受我不想接受的类型(该类型) 可以逐步检查类型: 内置函数,如is\u string 对gettype 但它有点不方便,因为它会给出很长的代码 因此,我准备了以下(相对较短——如果忽略外部部分)代码: !在数组(gettype($Item)中,MarC::Show\u Options\u Scalars()) 在哪里 函数Show\u Options\u Scalars()表示允许接受的标量类型
- 内置函数,如
is\u string
- 对
gettype
!在数组(gettype($Item)中,MarC::Show\u Options\u Scalars())
在哪里
函数Show\u Options\u Scalars()
表示允许接受的标量类型
那个人从接口中写入的常量准备允许类型的数组。这就是为什么我写道,如果忽略外部部分,那么自己的验证相对较短
我仍然不确定多类型验证是否可以做得更好——这意味着我是否可以用其他更好的方法验证变量类型。外部代码不是搜索更好的多类型验证的原因。我喜欢您的代码。我只会为它做一个函数
function val( &$value ) {
return !in_array( gettype( $value ), array( 'boolean', 'integer', 'what ever' ) );
}
我使用&来保存一些资源
用途:
if( val( $test ) ) die( 'pass' );
我不确定我是否完全理解你的问题。但是 以下函数将允许您输入变量和“合法”类型数组
function validate($input, $allowed_types) {
return in_array(gettype($input), $allowed_types);
};
所以
将返回true
。而:
validate('a great string which is a scalar!', ['integer', 'float', 'blah']);
将返回
false
问题是什么?您的问题仍然不清楚。也许把它大声读给朋友听,看看对他们是否有意义。你允许字符串包含int(例如“42”
)吗?或者您也想过滤这些类型的值吗?封装到函数中是可能的,但是当函数(Show\u Options\u Scalars()
例如)返回一个具有合法类型的数组时,它没有多大意义。那么我就无法理解您的目的。您可以选择不同的变量类型,也可以用函数替换数组。在您的使用中,不可能缩短代码。我不要求更改我的代码,但要求在其他地方提供替代方案。请原谅,有时我不知道在得到它之前要得到什么。您的方式更好-但我不会使用&
。
validate('a great string which is a scalar!', ['integer', 'float', 'blah']);