2016-06-17 5 views
0

In meinem Fall erstelle ich ein Modul für Drupal übergibt Datensätze von einer Datenbank zu einer anderen. Ich möchte die Standardfunktion node_save() verwenden, also muss ich ein Knotenobjekt mit einem stdClass() erstellen. Einmal habe ich den Datensatz in ein Array wie in diesem Beispiel exportiert:Erstellen Sie neue Attribute in einem PHP-Objekt durch externe Werte

$values = array(
    "data1" => "example1", 
    "data2" => "example2", 
    ... 
); 

ich die Werte auf diese Weise

$node = stdClass(); 
$node->title = 'Example'; 

Laufen durch das Array setzen müssen es einfacher, ein Attribut erstellen könnte wie Titel und den interessierten Wert wie geben:

foreach ($values as $key) { 
    $node->$key = $values[$key]; 
} 

es gibt einen Weg, um das Attribut automatisch wie

zu erstellen
$node->$key 

Und übergeben Sie einen Wert?

Antwort

0

Versuchen Sie dieses (statt $node->$key try $node->{$key} zu verwenden):

foreach ($values as $key => $val) { 
    $node->{$key} = $val; 
} 

Für Ihr Beispiel Array:

$values = array(
    "data1" => "example1", 
    "data2" => "example2", 
    ... 
); 

Der obige Code ausgeben wird:

$node->data1 = "example1"; 
$node->data2 = "example2"; 

object(stdClass)#1 (2) { 
    ["data1"]=> string(8) "example1" 
    ["data2"]=> string(8) "example2" 
} 
+1

Gelöst! Danke vielmals – Nilsen

1

Wenn Ihr Array ist eindimensional, Sie können einfach das Array als Objekt angeben wie zB

$values = array(
    "data1" => "example1", 
    "data2" => "example2", 
); 

$values = (object) $values; 

echo $values->data1;//example1