2013-04-20 9 views
11

Używam Twitter Search API i retursuje tablicę obiektów. Muszę sprawdzić dla każdego obiektu, czy zawiera on tablicę ['media']. Poniżej znajduje się jeden z obiektów z atrybutem mediów.PHP std :: Sprawdź, czy istnieje atrybut

object(stdClass)#56 (4) { 
    ["hashtags"]=> 
    array(2) { 
    [0]=> 
    object(stdClass)#57 (2) { 
     ["text"]=> 
     string(9) "katyperry" 
     ["indices"]=> 
     array(2) { 
     [0]=> 
     int(62) 
     [1]=> 
     int(72) 
     } 
    } 
    [1]=> 
    object(stdClass)#58 (2) { 
     ["text"]=> 
     string(8) "katycats" 
     ["indices"]=> 
     array(2) { 
     [0]=> 
     int(73) 
     [1]=> 
     int(82) 
     } 
    } 
    } 
    ["urls"]=> 
    array(0) { 
    } 
    ["user_mentions"]=> 
    array(1) { 
    [0]=> 
    object(stdClass)#59 (5) { 
     ["screen_name"]=> 
     string(13) "perfkatyperry" 
     ["name"]=> 
     string(7) "KatyCat" 
     ["id"]=> 
     int(611836599) 
     ["id_str"]=> 
     string(9) "611836599" 
     ["indices"]=> 
     array(2) { 
     [0]=> 
     int(3) 
     [1]=> 
     int(17) 
     } 
    } 
    } 
    ["media"]=> 
    array(1) { 
    [0]=> 
    object(stdClass)#60 (10) { 
     ["id"]=> 
     int(325747221490434048) 
     ["id_str"]=> 
     string(18) "325747221490434048" 
     ["indices"]=> 
     array(2) { 
     [0]=> 
     int(83) 
     [1]=> 
     int(105) 
     } 
     ["media_url"]=> 
     string(46) "http://pbs.twimg.com/media/BIVJXz-CAAAHQ8M.jpg" 
     ["media_url_https"]=> 
     string(47) "https://pbs.twimg.com/media/BIVJXz-CAAAHQ8M.jpg" 
     ["url"]=> 
     string(22) "http://t.co/RYgQ8Srze5" 
     ["display_url"]=> 
     string(26) "pic.twitter.com/RYgQ8Srze5" 
     ["expanded_url"]=> 
     string(66) "http://twitter.com/perfkatyperry/status/325747221486239744/photo/1" 
     ["type"]=> 
     string(5) "photo" 
     ["sizes"]=> 
     object(stdClass)#61 (5) { 
     ["medium"]=> 
     object(stdClass)#62 (3) { 
      ["w"]=> 
      int(600) 
      ["h"]=> 
      int(600) 
      ["resize"]=> 
      string(3) "fit" 
     } 
     ["thumb"]=> 
     object(stdClass)#63 (3) { 
      ["w"]=> 
      int(150) 
      ["h"]=> 
      int(150) 
      ["resize"]=> 
      string(4) "crop" 
     } 
     ["large"]=> 
     object(stdClass)#64 (3) { 
      ["w"]=> 
      int(1024) 
      ["h"]=> 
      int(1024) 
      ["resize"]=> 
      string(3) "fit" 
     } 
     ["small"]=> 
     object(stdClass)#65 (3) { 
      ["w"]=> 
      int(340) 
      ["h"]=> 
      int(340) 
      ["resize"]=> 
      string(3) "fit" 
     } 
     ["orig"]=> 
     object(stdClass)#66 (3) { 
      ["w"]=> 
      int(1024) 
      ["h"]=> 
      int(1024) 
      ["resize"]=> 
      string(3) "fit" 
     } 
     } 
    } 
    } 
} 

Jak mogę to zrobić?

Dzięki!

Odpowiedz

23

użyć pętli + property_exists funkcja:

foreach($myArray as $obj) 
{ 
    if(!property_exists($obj, 'media') || !is_array($obj->media)) 
    { 
    echo("property 'media' does not exist in $obj"); 
    // throw exception, fill in default value for media array, set variable, whatever. 
    } 
} 
+0

Dobra odpowiedź. Pomogło mi to. Pozdrowienia. –

+0

co z! Empty ($ obj-> media)? – Lamy

+0

@Lamy: '! Empty ($ obj-> media)' zwraca wartość 'false', jeśli '$ obj-> media' jest pustą tablicą; co nie jest tym, czego chce OP. –