Php 设置全局变量在Symfony中不起作用

Php 设置全局变量在Symfony中不起作用,php,symfony,Php,Symfony,我无法访问foreach循环外部的$result。当我使用dump($results)时在循环中我得到结果,但是当我使用转储($results)时循环外结果为空 $results = array(); foreach ($menu as $menus) { $mid = $menus->getId(); $em = $this->getDoctrine()->getManager(); $connection = $em->getConnecti

我无法访问
foreach
循环外部的
$result
。当我使用
dump($results)时在循环中我得到结果,但是当我使用
转储($results)时循环外结果为空

$results = array();

foreach ($menu as $menus) {
    $mid = $menus->getId();
    $em = $this->getDoctrine()->getManager();
    $connection = $em->getConnection();

    $statement = $connection->prepare("SELECT s.subtitle,m.* FROM submenu as s,menu as m where s.menu_id=m.id and m.id=:data");
    $statement->bindValue('data', $mid);
    $statement->execute();
    $results = $statement->fetchAll();
}
dump($results)

每次通过循环时都会覆盖
$results
变量。因此,最终值将只是最后一次查询的结果。我怀疑您想要合并所有查询的结果,因此需要合并数组

改变

$result = $statement->fetchAll();
致:

或者,您可以将所有查询合并到一个查询中。将所有菜单ID放入数组
$menuIDs
,然后执行以下操作:

$sql = "SELECT s.subtitle,m.* FROM submenu as s,menu as m where s.menu_id=m.id and m.id IN (" . implode(',', array_fill(0, count($menuIDs), '?')) . ")";
$statement = $connection->prepare($sql);
$statement->execute($menuIDs);
$results = $statement->fetchAll();

您确定
$menu
中有任何内容吗?似乎
foreach
中的变量可能是向后的。名称
$menu
听起来像数组的名称,而
$menu
则是数组的一个元素。顺便说一句,您不需要在循环中准备语句。准备一次,使用
bindParam
将参数绑定到变量引用,然后设置变量并在循环中调用
execute()
。好吧,不管怎样,每次都要覆盖它,可能需要
$results[]=$statement->fetchAll()是我在“$menu”中有一个包含4个数据的数组,我正在尝试打印与“$menu”关联的所有数据
$sql = "SELECT s.subtitle,m.* FROM submenu as s,menu as m where s.menu_id=m.id and m.id IN (" . implode(',', array_fill(0, count($menuIDs), '?')) . ")";
$statement = $connection->prepare($sql);
$statement->execute($menuIDs);
$results = $statement->fetchAll();