我只想问一下,是否可以在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)))
答案 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 ) )