Обход свойств объекта с помощью динамических имен - PullRequest
5 голосов
/ 10 марта 2011

Я пытаюсь получить текущие тренды из твиттер-интерфейса (но это как-то неважно).

Я получаю информацию в виде объекта.В этой ситуации некоторые свойства, к которым мне нужно получить доступ, относятся к датам последнего обновления тенденций, поэтому я не могу жестко закодировать имена свойств.

Вот пример, который я сам не объяснилхорошо, чего я боюсь, что не сделал: (

stdClass Object
(
[2011-03-09 02:45] => Array
    (
        [0] => stdClass Object
            (
                [promoted_content] => 
                [events] => 
                [query] => RIP Mike Starr
                [name] => RIP Mike Starr
            )

        [1] => stdClass Object
            (
                [promoted_content] => 
                [events] => 
                [query] => Mac & Cheese
                [name] => Mac & Cheese
            )

Примечание: это не полный объект

Ответы [ 2 ]

12 голосов
/ 10 марта 2011

Вы можете просмотреть свойства объекта, используя get_object_vars()

$fooBar = new stdClass();
$fooBar->apple = 'red';
$fooBar->pear  = 'green';

foreach(get_object_vars($fooBar) as $property => $value) {
  echo $property . " = " . $value . "\n";
}

// Output
// apple = red
// pear = green
5 голосов
/ 10 марта 2011

Получаете ли вы эти данные в формате JSON? Если это так, проверьте второй аргумент для json_decode, который позволяет получить результаты обратно в виде ассоциативного массива, а не в виде объекта. Это позволит вам использовать обычные конструкции цикла, такие как foreach, и получать ключи, используя array_keys.

Если вы не получаете эти данные через JSON, вы можете использовать Reflection , чтобы получить свойства объекта . (edit # 2: я не уверен, будет ли это работать на stdClass или нет, на самом деле ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...