ネストされた配列の内容を出力しようとしていますが、単に「Array」を文字列として返しますが、foreachループで反復することはありません。配列はmongodbfind()から来ています。データセットは次のようになります。
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;
}
}
2番目のforeachは無効な引数で失敗しました。どんな考えでも大歓迎です。
編集:おそらくそれは私がデータをDBに挿入する方法と関係があります。そのコードは次のようになります
$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();
これは、配列をプロパティとしてクラスに追加する適切な方法ではありませんか?