[英]fill in an associative array with a 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
与$array['id'] = $client->getId();
和$array['value'] = $client->getName();
您每次都覆盖$array[...]
。 如果您的逻辑“读取”循环的最后一个元素,则最后一个元素在$array
//更新
您可以这样做:
foreach ($clients as $key =>$client){
$array[]['id'] = $client->getId();
$array[]['value'] = $client->getName();
}
您正在覆盖数组,请尝试此操作。
foreach ($clients as $key =>$client){
$array[$key]['id'] = $client->getId();
$array[$key]['value'] = $client->getName();
}
我不知道您的$ key的值,如果您对$ key没问题,可以使用它,也可以对新生成的数组使用counter变量。
$i=0;
foreach ($clients as $key =>$client){
$array[$i]['id'] = $client->getId();
$array[$i]['value'] = $client->getName();
$i++;
}
您正在覆盖数组中的值,请尝试以下操作:
$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());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.