2013-03-18 16 views
13

Ich benutze eine API, die mich an eine E-Mail-Adresse ein Array wie folgt gegeben zurück:Zusammenführen von zwei Objekten in PHP

stdClass Object 
(
    [status] => OK 
    [contact] => stdClass Object 
     (
      [id] => 0000000 
      [email] => [email protected] 
      [last_activity] => 1362131446 
      [last_update] => 0 
      [created_at] => 1356617740 
      [sent] => 5 
      [open] => 1 
      [click] => 1 
      [spam] => 0 
      [bounce] => 0 
      [blocked] => 0 
      [queued] => 0 
     ) 
[lists] => Array 
     (
      [0] => stdClass Object 
       (
        [active] => 1 
        [unsub] => 1 
        [unsub_at] => 1363078528 
       ) 

     ) 

) 

wie Informationen fusionieren [Kontakt] mit [Listen] [0] in einem einzelnen Objekt ?

Vielen Dank für Ihre Hilfe

+0

[ Was hast du versucht?] (Http: // whathaveyoutried .com) – starshine531

Antwort

19
$info = yourstuff; 
$arrContact = (array) $info->contact; 
$arrList = (array) $info->lists[0]; 
$merged = array_merge($arrContact, $arrList); 
var_dump($merged, 'have fun'); 

Ganz trivial;)

+0

Es ist sehr gut :) –

+0

Bessere Lösung für die Frage – Basith

9
<?php 
$a = new stdClass; 
$a->name = 'Anthony'; 

$b = new stdClass; 
$b->location = 'UK'; 

$c = (object)array_merge((array)$a, (array)$b); 

var_dump($c); 

/* 
    object(stdClass)#3 (2) { 
     ["name"]=> 
     string(7) "Anthony" 
     ["location"]=> 
     string(2) "UK" 
    } 
*/ 
+1

Ich mag die Idee, es zu einem Objekt wieder zu werfen. Schade, dass ich vorher nicht daran gedacht habe. – Joshua

+0

Objekt des Typs stdClass kann nicht als Array verwendet werden –

+0

Dies sollte die akzeptierte Antwort sein! – patrick

2

Wie wäre:

foreach ($info->lists[0] as $key => $value { 
    $info->contact->$key = $value; 
} 

Vermeidet hin und her zwischen den Anordnungen Gießen und Objekte

Verwandte Themen