【问题标题】:PHP: return an array from a class constructorPHP:从类构造函数返回一个数组
【发布时间】:2018-04-11 04:38:33
【问题描述】:

我只是想问是否可以在PHP中构造一个类,当print_red时返回一个数组

例如:

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

    print_r((array) $c);

我希望它导致:

数组([1] => 数组([0] => 2 [1] => 3))

我得到了

数组([值] => 数组([1] => 数组([0] => 2 [1] => 3)))

【问题讨论】:

  • print_r() 是一个用于调试的函数。它的输出看起来如何并不重要。为什么它对你那么重要?我怀疑您正在尝试解决不同的问题。
  • 我实际上是在尝试获取一个类的数组,该类的样式必须与上面提到的完全相同,并简单地使用print_r 来解释结果

标签: php arrays class types return


【解决方案1】:

您需要改用以下代码:

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

print_r((array) $c);

这将提供预期的输出。

输出:

数组([1] => 数组([0] => 2 [1] => 3))

或者你可以试试这个:

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

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

这将提供相同的输出:

数组([1] => 数组([0] => 2 [1] => 3))

【讨论】:

  • 使用$this-&gt;${variable name} 作为值的有趣方法。在某处有$this-&gt;${variable name} 的文档吗?
  • @thebigsmileXD 是的,这些被称为Variable Variables
【解决方案2】:

这也有效,但我认为@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 ) )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-30
    • 2016-12-12
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    • 2015-03-02
    • 1970-01-01
    • 2023-04-09
    相关资源
    最近更新 更多