打印嵌套数组的内容

时间:2013-02-21 02:33:10

标签: php mongodb multidimensional-array foreach

我正在尝试打印嵌套数组的内容,但它只是将“Array”作为字符串返回,但不会使用foreach循环进行迭代。这些数组来自mongodb find()。数据集如下所示:

User
Post_Title
Post_Content[content1,content2,content3]

我想了解内容1,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;
        }
    }   

所有这些代码都打印标题,然后是Array([0] => Array),接着是Array。

如果不弄清楚看起来那么基本的东西,我感到非常愚蠢。堆栈溢出的大多数帖子都是指多维关联数组 - 在这种情况下,顶级数组是关联的,但内容数组是索引的。

我也试过

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

这不是将数组作为属性添加到类的正确方法吗?

2 个答案:

答案 0 :(得分:2)

问题是一些数组内容是一个数组,而其他部分是字符串。您应该使用is_array()测试子内容$doc是否为数组。如果是的话,像任何其他数组一样遍历$doc,如果不是,则可以回显内容(如果您不确定是什么,可能需要先测试内容类型它可以是内容)

答案 1 :(得分:1)

问题在于您要保存数据的代码。您应该替换以下行

$ object-> content =“$ content”;

$ object-> content = $ content;