【问题标题】:What does the `array` keyword mean in the parameter list of a PHP function?PHP函数的参数列表中的`array`关键字是什么意思?
【发布时间】:2018-01-23 06:42:07
【问题描述】:
function request($suffix, array $post = array(), $action = NULL) {
    // do something...
}

我在一本书中看到了一个函数。但是我不明白函数的参数列表中$post之前的关键字array是什么意思。我觉得省略array也会有同样的效果。

它是否充当数据类型提示?如果是这样,那为什么我不能在其他参数之前使用stringinteger等?

【问题讨论】:

  • 表示参数$post必须是一个数组。如果不是数组会报错。
  • 我相信 php 7.0 他们引入了更严格的数据输入方式。如果函数使用不正确,$post 之前的数组会抛出错误并启用正确处理。
  • @Script47 数组 type 不是可选的,但您可以在不传递数组的情况下使用该方法,因此它将是方法头中定义的空数组
  • @Benson 这是 PHP 7 的一个特性,可能你使用的是低版本
  • @Benson PHP 5 只为类、接口和数组引入了类型提示,原始类型提示仅在 php 7 之后才可用。

标签: php arrays function parameters


【解决方案1】:
function request($suffix, array $post = array(), $action = NULL) {
    // do something...
}

该函数接受多个参数,参数 $post 类型提示为数组

array $post = array()

这里我们可以看到 $post 默认分配了一个空数组,所以它符合它的类型

$post = array() and array $post = array() will return the same

如果您尝试将数组以外的其他内容作为参数传递给该函数,则会出现错误

type hinting更多解释参考那个

【讨论】:

  • 非常感谢!那我就想知道为什么PHP中只有array类型提示限制数据类型为Array,而没有其他类型提示限制其他类型,如integerstring等? (如果我使用integerstring 等,我会在 IDE 中得到语法错误提示。我使用的是 PHP 5.6。)
  • 请注意,在 PHP5 中,此类型提示将被解释为要求第一个参数是“字符串”类的实例而不是字符串。因此,在 PHP5 中,将字符串传递给以这种方式编写的类会导致错误。在 PHP7 中需要一个字符串。 - 来源:torquemag.io/2016/09/wordpress-developers-guide-type-hinting@Benson
  • 感谢您的帮助!
  • 太棒了。现在我明白了。太感谢了! @Cezary
猜你喜欢
  • 1970-01-01
  • 2012-12-12
  • 1970-01-01
  • 1970-01-01
  • 2023-03-04
  • 2013-11-08
  • 2020-05-26
相关资源
最近更新 更多