Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 寻找更好的多类型验证_Php_Validation - Fatal编程技术网

Php 寻找更好的多类型验证

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_scalar这样的常规函数-因为这也会接受我不想接受的类型(该类型)

可以逐步检查类型:

  • 内置函数,如
    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']);