2013-02-21 106 views
0

我試圖打印嵌套數組的內容,但它只是返回「數組」作爲字符串,但不會迭代foreach循環。這些數組來自mongodb find()。該數據集看起來像這樣:嵌套數組的打印內容

User 
Post_Title 
Post_Content[content1,content2,content3] 

我想在content1,2,3。

我當前的代碼看起來是這樣的:

$results = $collection->find($query); 

foreach ($results as $doc) 
    { 
    echo $doc['title']; //this works 
    $content[] = $doc['content'];   
    print_r($content); //this prints "Array ([0] => Array)" 
    foreach ($content as $item) 
     { 
     echo $item; 
     } 
    } 

所有這些代碼的作用是打印標題,接着陣列([0] =>數組),其次是數組。

我覺得很愚蠢,不知道這些看起來很基本的東西。堆棧溢出的大多數帖子都是指多維關聯數組 - 在這種情況下,頂級數組是關聯的,但內容數組是索引的。

我也曾嘗試

foreach ($doc['content'] as $item) 

但是,讓

Warning: Invalid argument supplied for foreach() 

我甚至嘗試迭代返回數組再次使用嵌套的foreach,如下所示:

foreach ($results as $doc) 
    { 
    echo $doc['title']; //this works 
    $content[] = $doc['content'];   
    print_r($content); //this prints "Array ([0] => Array)" 
    foreach ($content as $item) 
     { 
      foreach ($item as $next_item) 
       { 
        echo $next_item; 
       } 
     echo $item; 
     } 
    } 

第二個foreach失敗,無效的論點.. 任何想法會不勝感激。

編輯:也許這與我如何將數據插入數據庫有關。該代碼看起來像這樣

$title = $_POST['list_title']; 
$content[] = $_POST['list_content1']; 
$content[] = $_POST['list_content2']; 
$content[] = $_POST['list_content3']; 

$object = new Creation(); 
$object->owner = "$username"; 
$object->title = "$title"; 
$object->content = "$content"; 
$object->insert(); 

這不是將數組作爲屬性添加到類中的正確方法嗎?

+0

你有沒有試過$ content [0]而不是$ content? – 2013-02-21 02:36:08

+0

我實際上只是試過'print_r($ doc ['content'] [0]);'並且它返回了字母A.我認爲它可能會返回正確的數據,但Mongo已經將字符串數據保存爲字符串「數組」而不是數組的內容。檢查mongo控制檯似乎證實了這一點。 – sricks 2013-02-21 02:46:30

回答

1

問題出在您保存數據的代碼中。您應該更換以下行

$ object-> content =「$ content」;

$ object-> content = $ content;

+0

謝謝你,先生,這看起來是答案..它實際上是保存字符串「數組」而不是實際的數組到對象。 – sricks 2013-02-21 02:49:59

2

問題是一些數組內容是一個數組而其他部分是字符串。您應該使用is_array()測試子內容$doc是一個數組。如果是這樣,像其他任何數組一樣循環訪問$doc,如果不是,則可以回顯內容(如果您不確定可以使用什麼內容,可能需要先測試內容類型)