PHP:从类构造函数返回一个数组

时间:2017-10-30 08:54:52

标签: php arrays class types return

我只想问一下,是否可以在PHP中构造一个在print_r编辑时返回数组的类

例如:

    <?php
    $c = new class(1,2,3){
        function __construct($var1, $var2, $var3){
            $this->value = [$var1 => [$var2, $var3]];
        }
    };

    print_r((array) $c);

我希望它导致:

  

数组([1] =&gt;数组([0] =&gt; 2 [1] =&gt; 3))

而不是

  

数组([value] =&gt;数组([1] =&gt;数组([0] =&gt; 2 [1] =&gt; 3)))

2 个答案:

答案 0 :(得分:2)

您需要使用以下代码:

$c = new class(1,2,3){
    function __construct($var1, $var2, $var3){
        $this->$var1 = [$var2, $var3];
    }
};

print_r((array) $c);

这将提供预期的输出。

输出:

  

数组([1] =&gt;数组([0] =&gt; 2 [1] =&gt; 3))

或者你可以试试这个:

$c = new class(1,2,3){
    function __construct($var1, $var2, $var3){
        $this->value = [$var1 => [$var2, $var3]];
    }
};

print_r((array) $c->value);

这将提供相同的输出:

  

数组([1] =&gt;数组([0] =&gt; 2 [1] =&gt; 3))

答案 1 :(得分:0)

这也有效,但我认为@ mega6382的答案更好

<?php
$c = new class(1,2,3) extends ArrayObject{
    function __construct(int $var1, int $var2, int $var3){
        parent::__construct([$var1 => [$var2, $var3]]);
    }
};

print_r((array) $c);

给出:

Array ( [1] => Array ( [0] => 2 [1] => 3 ) )