我试图打印嵌套数组的内容,但它只是将"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;
}
}
所有这些代码所做的就是打印标题,然后是数组([0]=>数组),然后是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失败,参数无效。。任何想法都将不胜感激。
edit:也许这与我如何将数据插入数据库有关。那个代码看起来像这个
$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();
这不是将数组作为属性添加到类的正确方法吗?
问题是一些数组内容是数组,而其他部分是字符串。您应该使用is_array()测试子内容$doc
是否为数组。如果是,则像循环使用任何其他数组一样循环使用$doc
,如果不是,则可以回显内容(如果您不确定它可能是什么内容,则可能需要在执行此操作之前测试内容类型)
问题在于保存数据的代码。您应该更换以下行
$object->content="$content";
带有
$object->content=$content;