2017-10-30 2 views
1

Ich möchte nur fragen, ob es möglich ist, eine Klasse in PHP zu erstellen, die ein Array zurückgibt, wenn print_r edPHP: ein Array aus einer Klasse Konstruktor

Zum Beispiel:

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

    print_r((array) $c); 

ich will es resultiert in:

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

stattdessen bekomme ich

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

+0

['print_r()'] (http://php.net/manual/en/function.print-r.php) ist eine Funktion zum Debuggen. Es sollte egal sein, wie seine Ausgabe aussieht. Warum ist das so wichtig für dich? Ich vermute, du versuchst ein anderes Problem zu lösen. – axiac

+0

Ich versuche tatsächlich, ein Array einer Klasse zu bekommen, die den genauen Stil wie oben erwähnt sein muss und einfach 'print_r' verwendet, um das Ergebnis zu erklären – thebigsmileXD

Antwort

2

Sie benötigen Verwenden Sie stattdessen den folgenden Code:

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

print_r((array) $c); 

Dies wird die erwartete Ausgabe bereitstellen.

Ausgang:

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

Oder Sie können versuchen, diese:

Array ([1]:

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

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

Dies wird die gleiche Leistung bereitzustellen => Array ([0] => 2 [1] => 3))

+1

Interessanter Ansatz,' $ this -> $ {Variablenname} 'als Wert zu verwenden. Gibt es irgendwo eine Dokumentation zu '$ this -> $ {variable name}? – thebigsmileXD

+1

@thebigsmileXD Ja, diese heißen [Variable Variablen] (http://php.net/manual/en/language.variables.variable.php) – mega6382

0

auch Das funktioniert, aber ich halte @ Antwort des mega6382 als besser

<?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); 

Gibt:

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