2013-03-18 27 views
13

Używam API, które zwraca do mnie na adres e-mail podany tablicę tak:Scalanie dwóch obiektów w 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 
       ) 

     ) 

) 

jak scalić informacje o [kontakt] z [list] [0] w jednym obiekcie ?

Dziękuję za pomoc

+0

[ Co próbowaliście?] (Http: // whathaveyoutried .com) – starshine531

Odpowiedz

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

Dość banalny;)

+0

Jest bardzo dobrze :) –

+0

Lepsze rozwiązanie na pytanie – 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

Podoba mi się pomysł ponownego rzucenia go na obiekt. Szkoda, że ​​wcześniej o tym nie myślałem. – Joshua

+0

Nie można użyć obiektu typu stdClass jako tablicy –

+0

To powinna być zaakceptowana odpowiedź! – patrick

2

Jak o:

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

Unika odlewania iz powrotem między tablic i obiektów