2017-05-08 32 views
0

これは私に最後の値だけを与え、私のdbのすべての値を与えないのはなぜですか? $array['id'] = $client->getId();$array['value'] = $client->getName();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[...]毎回上書きされます。あなたのロジックはあなたのループの最後の要素を「読み」なら、最後の要素は、あなたの$array

である//あなたはこのような何かがあり

を更新:あなたを上書きしている

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

を配列は、あなたが新たに発生したアレイのカウンタ変数を使用することができ、それを使用するキー$またはでOKであれば、私は、あなたの$キーの値を知らない

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

。これを試してみてください。

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

foreach ($clients as $client){ 

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

} 

return $rows; 

それともarray_map機能を使用することができます。

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

あなたは、配列内の値を上書きしているが、これを試してみてください。

return array_map(function($client){ 

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

}, $repo->findAll());