验证传递给函数的参数是否不是数组

时间:2018-07-25 10:42:01

标签: php function oop

假设我具有功能

public function test($dataid){
    .........   
}

现在我只想在$dataid必须是数组时才运行函数。如果不是,那将是行不通的

ifi传递了一个字符串,例如test("string"),它将无法运行。

我知道is_array(),但是还有其他解决方法吗?

如果值为空,它将自动转换为数组

3 个答案:

答案 0 :(得分:3)

您可以使用PHP的type hinting

public function(array $arg){
 ....
}

但这不会将$arg转换为数组,您可以允许NULL这样的值:

// PHP 7.1 and above
public function(?array $arg){
 ....
}

// Or set the default value to NULL
public function(array $arg = NULL){
 ....
}

或者简单地使用is_array($arg),如果TRUE是一个数组,它将返回$arg

要将值转换为数组,您可以type cast

(array) '';   // Gives an array with one element equal to ''
(array) NULL; // Gives an empty array
(array) 0;    // Gives an array with one element equal to 0

答案 1 :(得分:0)

类型提示将起作用,但是under version restrictions

原始方法。

if(gettype($dataid) === 'array'){
    // Do the needful here
}

仍然会非常可靠...

答案 2 :(得分:0)

这就是您想要的:

if (is_array($array) or ($array instanceof Traversable)) {
    ...
}