Php 使用两个循环填充一个数组
我有一个对象,里面有我所有的文章 我目前正在循环我的对象以填充一个数组,在这个数组中我为每一篇文章创建一个关联表 在我的对象中,我还有一个Categories对象,我想在以前完成的每个关联数组的末尾添加每个类别的标签,但是 我不知道怎么做。。在“类别”对象中,可能有多个标签 我的代码:Php 使用两个循环填充一个数组,php,arrays,symfony,loops,object,Php,Arrays,Symfony,Loops,Object,我有一个对象,里面有我所有的文章 我目前正在循环我的对象以填充一个数组,在这个数组中我为每一篇文章创建一个关联表 在我的对象中,我还有一个Categories对象,我想在以前完成的每个关联数组的末尾添加每个类别的标签,但是 我不知道怎么做。。在“类别”对象中,可能有多个标签 我的代码: $articles = $this->entityManager->getRepository('SGBundle:Article')->findBy([], ['id'=>'desc']
$articles = $this->entityManager->getRepository('SGBundle:Article')->findBy([], ['id'=>'desc']);
$arrayCollection = [];
foreach($articles as $article) {
$arrayCollection[] = [
'id' => $article->getId(),
'date_publication' => $article->getDatePublication(),
...
];
foreach($article->getCategories() as $categorie) {
$arrayCollection[] = ['categorie' => $categorie->getLibelle()];
}
}
在我的屏幕截图上,每篇文章都有一个包含36个值的数组一个1值的数组,我希望这个表在有36个值的表中。有可能吗?首先收集类别,然后将它们添加到文章项中:
foreach($articles as $article) {
$categories = [];
foreach($article->getCategories() as $categorie) {
$categories[] = $categorie->getLibelle();
}
$arrayCollection[] = [
'id' => $article->getId(),
'date_publication' => $article->getDatePublication(),
...
//
'categorie' => $categories,
];
}
如果
article.categories
字段标记为lazy,则默认情况下它不会被水合,并且$article->getCategories()
将在每个循环回合上执行新的查询
在本例中,您可能希望使用自定义DQL查询来优化此查询,并在一个请求中获得所需的精确数组,而不是通过查找简单的
还要注意,当前查询正在获取数据库中的所有项目。虽然这可能是您的目的,但请记住,随着数据的增长,这可能会变得相当沉重。在大多数情况下,这种查询应该分页