Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.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_Arrays_Parameters_Null_Optional - Fatal编程技术网

PHP:我应该什么时候检查数组的可选参数类型?

PHP:我应该什么时候检查数组的可选参数类型?,php,arrays,parameters,null,optional,Php,Arrays,Parameters,Null,Optional,检查函数中可选参数类型的最佳方法是什么?到目前为止,我看到的每个例子都是下面的风格2。这是一种比选项1更好的方法,还是仅仅因为您无法直接检查参数中的某些内容?如果传递了可选参数,则需要将其设置为数组 (一) 或 (二) 第二个选项通常更可取,因为如果传入的不是数组,则会出现致命错误: function foo1 (array $opt) { var_dump($opt); } function foo2 ($opt = null) { var_dump($opt); } foo2(array(

检查函数中可选参数类型的最佳方法是什么?到目前为止,我看到的每个例子都是下面的风格2。这是一种比选项1更好的方法,还是仅仅因为您无法直接检查参数中的某些内容?如果传递了可选参数,则需要将其设置为数组

(一)

或 (二)


第二个选项通常更可取,因为如果传入的不是数组,则会出现致命错误:

function foo1 (array $opt) { var_dump($opt); }
function foo2 ($opt = null) { var_dump($opt); }

foo2(array('bar')); // dumps out an array with 'bar' in it
foo1('bar'); // catchable fatal error

如果PHP有函数重载,这不会是一个问题

OOP的一个兴趣是添加约束以避免bug。如果你遵循这个想法,第一种方法似乎更好


很多PHP开发人员没有像C中那样严格地使用编码,因为PHP本质上是灵活的/允许的,并且不会让习惯成为最严格的限制。

两者如何
if($optData!==NULL&&is_array($optData))
在第一个示例中,$optData需要作为数组提供。第二个变量可以是单值变量,也可以是数组。这就是为什么要用“is_数组”来研究它。两者都在做同样的事情我知道他们都以同样的结果结束,我想知道我是否遗漏了什么,因为我能找到的每个例子都是第二种风格,而第一种风格对我来说更直观(至少来自我的强类型语言背景)。
public function foo($reqData, $optData = NULL) {
  ...
  if (is_array($optData)) {
    foreach ($optData...
  }
}
function foo1 (array $opt) { var_dump($opt); }
function foo2 ($opt = null) { var_dump($opt); }

foo2(array('bar')); // dumps out an array with 'bar' in it
foo1('bar'); // catchable fatal error