2016-04-19 6 views
0

コード:のMongoDBやTwitter配列

$m = new MongoClient(); 
$db = $m->selectDB('twitter'); 
$collection = new MongoCollection($db, 'status'); 
$cursor = $collection->find(); 
foreach ($cursor as $document) { 
    echo $document['statuses'][0]['text']; 
} 

アレイ:

Array 
(
    [_id] => MongoId Object 
    (
     [$id] => 123 
    ) 

    [statuses] => Array 
    (
     [0] => Array 
      (
      [text] => Tweet no 1 
      ) 
     [1] => Array 
      (
      [text] => Tweet no 2 
      ) 
     [1] => Array 
      (
      [text] => Tweet no 3 
      ) 
    ) 
) 

出力は次のようになります?どのように私は、全体の 'テキスト' 配列を得るのですかいいえ1.

さえずるませんか代わりに 'Tweet no 1、Tweet no 2、Tweet no 3'を返す必要があります。

私はecho $document['statuses']['text']を試しましたが、動作しません。

答えて

1

今すぐクエリがコレクションを返すので、正しく反復処理しています。問題はそれだけで一つの文書のコレクションであり、あなたはその文書にのみ最初の状態を印刷している次のとおりです。

foreach ($cursor as $document) { 
    // here $document = {_id: 123, statuses:[{text:'Tweet no 1'},{text:'Tweet no 2'},{text:'Tweet no 3'}]} 
    // here you are only printing the first status  
    echo $document['statuses'][0]['text']; 
} 

あなたはその配列をループにしたいので、あなたの文書は、ステータスの配列を持っています

foreach ($cursor as $document) { 
    foreach($document["status"] as $status) { 
     echo $status['text']; 
    } 
}