2016-04-19 9 views
0

Code:MongoDB und Twitter Array

$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:

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 
      ) 
    ) 
) 

Der Ausgang ist: Tweet no 1.

Wie bekomme ich den ganzen 'Text' Array? Es sollte stattdessen "Tweet Nr. 1, Nr. 2, Nr. 3" zurückgegeben werden.

Ich habe versucht echo $document['statuses']['text'] funktioniert aber nicht.

Antwort

1

Im Moment gibt Ihre Abfrage eine Sammlung zurück, so dass Sie sie korrekt durchlaufen. Das Problem ist, es ist eine Sammlung mit nur einem einzigen Dokument und Sie drucken nur den ersten Status in diesem Dokument:

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']; 
} 

Ihr Dokument eine Reihe von Zuständen hat, so dass Sie eine Schleife durch das Array zu wollen:

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