отражая части массива? - PullRequest
0 голосов
/ 09 марта 2010

У меня есть следующий массив, который я получаю в качестве вывода из Facebook: http://www.paste.to/v/1jntlnml

со следующим кодом -

<code>$stream = $facebook->api_client->stream_get('',128342905144,'0','0',30,'','','','');

foreach($stream as $wallpost) 
{
   echo '<pre>';
   print_r($wallpost);
   echo '
'; }

Итак, я получаю данные, которые мне нужны, но я хочу вызвать отдельные переменные в этом массиве. Например, выводите [сообщение] для каждого сообщения.

Так как он зацикливается только один раз, я не могу echo $wallpost['message'] или что-либо подобное.

Есть идеи?

1 Ответ

0 голосов
/ 09 марта 2010

Если вывод echo $wallpost равен Array Array, я предполагаю, что $ wallpost содержит массивы из pastebin, например,

$stream = Array(
  // $stream[0]
  Array(
    // $stream[0][0]
    Array('message' => 'msg1'),
    // $stream[0][1]
    Array('message' => 'msg2'),
  ),
  // $stream[0]
  Array(
    /* other stuff */
  )
);

В этом случае вы получаете сообщения, перебирая первый массив, содержащий такие сообщения

foreach($stream[0] as $wallposts) {
    echo $wallposts['message'];
}

В качестве альтернативы, оберните возвращаемый массив в RecursiveArrayIterator , чтобы обойти весь массив за один раз:

$iterator = new RecursiveIteratorIterator(
                new RecursiveArrayIterator($stream),
                RecursiveIteratorIterator::SELF_FIRST));

foreach($iterator as $key => $val) {
    if($key === 'message') {
        echo $val;
    }
}

Примечание: в вашем случае использование Итератора довольно бессмысленно, хотя вы знаете, что второй массив не содержит элементов с записями в нем, а первый массив не является вложенным.

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