这个功能正在检查什么?

时间:2011-04-01 18:57:41

标签: php arrays function arguments

我正在尝试将一些PHP代码移植到C#,我遇到了这种形式的PHP函数:

function DoStuff($myVar, array $myArray1, array $myArray2 = array())
{
    // some code not involving $myArray2

    if ($myArray2)
    {
        // do things with $myArray2, but if I arrive here, what
        // condition was met?
    }
} 

我最好的猜测(这可能是完全错误的)在查看php.net中的一些适当的页面后发现了什么:

  • $myArray2是可选的,但如果没有提供,则数组为空
  • if条件检查是否使用一个或多个元素传入$myArray2

这是对的吗?如果没有,那是对的?谢谢!

2 个答案:

答案 0 :(得分:6)

是的,这是正确的。如果为$myArray1$myArray2传递了不是数组的内容,该函数也会抛出致命错误。

答案 1 :(得分:2)

你是对的,这是一个解释:

类型提示array表示$myArray2只能接受数组。默认值array()表示$myArray2是可选的,如果未传递,则会分配一个空数组。

鉴于$myArray2条件时if唯一可能是数组,您可以确认类型转换为布尔值所接受的内容。在这种情况下,除非数组没有元素,否则数组总是转换为true。

旁白:您应该注意,虽然将NULL作为参数传递给$myArray1$myArray2目前是非法的,但设置是合法的默认值$myArray2为NULL。在这种情况下,您还可以将NULL传递给该参数。此外,条件也将检查参数未设置为NULL。