2017-05-08 87 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());