繁体   English   中英

用foreach php填充关联数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM