Symfony存储foreach循环的结果

我想知道是否可以存储foreach循环的结果。 我不知道如何解释我的问题更详细。

所以,让我们说下面让我3个不同的阵列

$events = $this->getDoctrine()->getRepository('TestBundle:Events')->findBy(array('event' => $eventId));

#name,color#

粉红色派对
2. Poolparty,蓝色
3. B天,红色

foreach $events以避免非对象调用。

foreach($events as $e)
{
    $name = $e->getName();
    $color = $e->getColor();
}

现在我可以将数组返回到树枝并循环它们,但是可以将它们存储到控制器中的数组中吗?

我目前的代码

$events = 
$this->getDoctrine()->getRepository('TestBundle:Events')->findBy(array('event' => $eventId));

foreach($events as $e)
{                   
    $name = $e->getName();
    $color = $e->getColor();

    $array = array(array("$name", "$color"));
}

return new JsonResponse($array);

有了这个,我只获得最后一个数组。 在这种情况下, B天,红色。 希望有人能帮我解决我的问题。 谢谢你的时间!


您需要将结果存储在循环之外,以便在迭代之间保持结果。 取决于你想要的,它看起来像:

$output = array();

foreach($events as $event)
{
    $output[$event->getName()] = $event->getColor();
}

return new JsonResponse($output);

...或者像这样...

$output = array();

foreach($events as $event)
{
    $output[] = array($event->getName(), $event->getColor());
}

return new JsonResponse($output);

前者的输出看起来像{"B-day": "red", ...}而后者看起来像[["B-day", "red"], ...]


您通常会选择以前的输出,因为建议用于AJAX的JSON中最外层的类型是一个对象,而不是数组(出于安全原因)。


虽然这不能直接回答你的问题,但看起来你正在构建某种类型的json API。 如果这是真的,我强烈建议使用像Fractal这样的类型的实体>> api转换。

链接地址: http://www.djcxy.com/p/8387.html

上一篇: Symfony storing results of foreach loop

下一篇: Spring rest not returning my object json