2016-06-02 15 views
0

Meine Frage ist eine Variation der folgenden post here hinzugefügt JSON-Logik. Ich benutze PHP 5.6.22Objekt ohne Klasse: Hinzufügen neuer Felder und Rückgabe als JSON

Ich muss eine Klasse ohne ein Objekt in Runtim erstellen, um ein JSON-Objekt des gleichen Typs zu erstellen, um an den Client zurückgegeben werden. Mein Code:

public static function getData() 
{ 
    $columns = array ("Name", "Address", "Age"); 
    $values = array ("John", "A Ave 222", 32); 

    $ret = (object)[]; 
    $index = 0; 

    foreach ($columns as $col) 
    { 
     $value = $values[$index++]; 
     $ret[] = (object) [$col => $value]; // Error here 
    } 

    return json_encode($ret); 
} 

Beim Laufen, dass ich die folgende Fehlermeldung erhalten:

<b>Fatal error</b>: Cannot use object of type stdClass as array in <source filename> on line <linenumber> 

Hilfe appreaciated, dass zu lösen ...

+1

'$ ret = (Objekt) [];' bedeutet '$ ret' ist eine Instanz von' stdClass' (obwohl Gott weiß, warum Sie das überhaupt tun), später verwenden Sie '$ ret [] =' was Sie nicht tun können, weil '$ ret' ein Objekt und kein Array ist. –

+0

1. Verwenden Sie PHP7? 2. Meinst du ein Objekt ohne Klasse? – guessimtoolate

+0

Übrigens, Funktion heißt json_encode – splash58

Antwort

1

In PHP können Sie neue Eigenschaft Array fügen Sie einfach durch Setzen sie

$columns = array ("Name", "Address", "Age"); 
$values = array ("John", "A Ave 222", 32); 

$ret = (object) []; 
$index = 0; 

foreach ($columns as $col) 
{ 
    $value = $values[$index++]; 
    // You can create and add new property to object in php by such way 
    $ret->$col = $value; 
} 

echo json_encode($ret); // {"Name":"John","Address":"A Ave 222","Age":32} 
+0

Manchmal einfacher als wir denken .... Danke !! – Mendes

+0

Froh, als könnte helfen. Viel Glück! – splash58

0

Wie wäre:

public static function getData() 
{ 
    $data = [ 
     "Name" => "John", 
     "Address" => "A Ave 222", 
     "Age" => 32, 
    ]; 
    return json_encode($data); 
} 

?

Verwandte Themen