有人可以解释为什么我得到一个空数组?

时间:2014-01-15 23:35:44

标签: php arrays

我不是新手,但我发现可选参数有点......独特,或者只是我。

如果我有以下内容:

class SomeClass{
    public function some_method($required_param, $optional_array = array()){
        var_dump($optional_array); exit;
    }
}

然后执行以下操作:

$test = new SomeClass();
$test->some_method('required', array('optional'));

我以[{1}} var_dump收回。

我甚至尝试过:

array(0){}

结果相同。是因为我已经定义$test = new SomeClass(); $array = array('optional') $test->some_method('required', $array); 已被设置为空数组?我发誓这就是你如何设置optional parameters, according to example 3那么为什么它坚持使用默认的空数组呢?为什么它没有看到嘿,这已经确定了。

3 个答案:

答案 0 :(得分:1)

class SomeClass{
    public function some_method($required_param, $optional_array = array()){
        var_dump($optional_array); exit;
    }
}

使用var_dump($optional_array);而不是var_dump($optional_array());

答案 1 :(得分:0)

您正在尝试访问您的阵列,就像它是一个函数一样。所以删除()它会起作用:

var_dump($optional_array);

而不是

var_dump($optional_array());

答案 2 :(得分:0)

你的var_dump上有一组多余的括号。它试图调用作为数组传入的匿名函数。

试试这个:

class SomeClass{
    public function some_method($required_param, $optional_array = array()){
        var_dump($optional_array);
    }
}

$test = new SomeClass();
print "one\n";
$test->some_method('required', array('optional'));
print "two\n";
$test->some_method('required');

我机器上的输出是:

one
array(1) {
  [0]=>
  string(8) "optional"
}
two
array(0) {
}