0

我有以下数组作为 facebook 的输出:http: //www.paste.to/v/1jntlnml

使用以下代码-

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

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

所以我得到了我需要的数据,但我想调用这个数组中的各个变量。例如,为每个帖子回显 [message]。

由于它只循环一次,我不能echo $wallpost['message']或类似的东西。

任何想法?

4

1 回答 1

0

如果输出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;
    }
}

注意:在您的情况下,使用 Iterator 是毫无意义的,因为您知道第二个数组不包含任何带有帖子的元素,并且第一个数组没有嵌套。

于 2010-03-08T22:25:20.967 回答