Php 使用两个循环填充一个数组

Php 使用两个循环填充一个数组,php,arrays,symfony,loops,object,Php,Arrays,Symfony,Loops,Object,我有一个对象,里面有我所有的文章 我目前正在循环我的对象以填充一个数组,在这个数组中我为每一篇文章创建一个关联表 在我的对象中,我还有一个Categories对象,我想在以前完成的每个关联数组的末尾添加每个类别的标签,但是 我不知道怎么做。。在“类别”对象中,可能有多个标签 我的代码: $articles = $this->entityManager->getRepository('SGBundle:Article')->findBy([], ['id'=>'desc']

我有一个对象,里面有我所有的文章

我目前正在循环我的对象以填充一个数组,在这个数组中我为每一篇文章创建一个关联表

在我的对象中,我还有一个Categories对象,我想在以前完成的每个关联数组的末尾添加每个类别的标签,但是 我不知道怎么做。。在“类别”对象中,可能有多个标签

我的代码:

$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查询来优化此查询,并在一个请求中获得所需的精确数组,而不是通过查找简单的

还要注意,当前查询正在获取数据库中的所有项目。虽然这可能是您的目的,但请记住,随着数据的增长,这可能会变得相当沉重。在大多数情况下,这种查询应该分页