2013-03-18 42 views
13

Io uso un'API che mi riporta a un indirizzo di posta elettronica dato un array come questo:Unire due oggetti 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 
       ) 

     ) 

) 

come unire info [contatto] con [list] [0] in un unico oggetto ?

Grazie per il vostro aiuto

+0

[ Che cosa hai provato?] (Http: // whathaveyoutried .com) – starshine531

risposta

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

Piuttosto banale;)

+0

È molto buono :) –

+0

Soluzione migliore per la domanda – 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

Mi piace l'idea di lanciarlo di nuovo su un oggetto. Peccato che non ci avessi pensato prima. – Joshua

+0

Impossibile utilizzare l'oggetto di tipo stdClass come array –

+0

Questa dovrebbe essere la risposta accettata! – patrick

2

ne dite:

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

Evita colata avanti e indietro tra array e gli oggetti