2017-05-08 54 views
0

为什么这只给我最后一个值,而不是我的数据库中的所有值?用foreach填充关联数组php

$em = $this->getDoctrine()->getManager(); 
    $repo = $em->getRepository('ErpBundle:Sponsor'); 
    $clients = $repo->findAll(); 
    $array = array(); 
    foreach ($clients as $key =>$client){ 
     $array['id'] = $client->getId(); 
     $array['value'] = $client->getName(); 
    } 
    return $array 

回答

0

$array['id'] = $client->getId();$array['value'] = $client->getName();您将要覆盖$array[...]每次。如果你的逻辑“上写着”你的循环的最后一个元素,那么最后一个元素是你$array

//更新

你可以做这样的事情:

foreach ($clients as $key =>$client){ 
    $array[]['id'] = $client->getId(); 
    $array[]['value'] = $client->getName(); 
} 
0

您将要覆盖阵列,试试这个..

foreach ($clients as $key =>$client){ 
    $array[$key]['id'] = $client->getId(); 
    $array[$key]['value'] = $client->getName(); 
} 

我不知道你的$键的值,如果您没有问题$键使用它,或者你可以使用计数器变量为新生成的阵列。在阵列

$i=0; 
foreach ($clients as $key =>$client){ 
    $array[$i]['id'] = $client->getId(); 
    $array[$i]['value'] = $client->getName(); 
    $i++; 
} 
0

你重写值试试这个:

$clients = $repo->findAll(); 
$rows = array(); 

foreach ($clients as $client){ 

    $rows[] = array(
     'id' => $client->getId(), 
     'name' => $client->getName() 
    ); 

} 

return $rows; 

或者您可以使用array_map功能。

return array_map(function($client){ 

    return array(
     'id' => $client->getId(), 
     'name' => $client->getName() 
    ); 

}, $repo->findAll());