将foreach循环结果保存到数组中

时间:2010-12-27 17:33:35

标签: php arrays foreach

我希望$servico将此foreach ($produtos as $produto)循环的所有迭代存储到数组中:

但是,我只获取最后一次出现的id,name和domain。

$servico = array();

        foreach ($resposta->products as $produtos)
        {


            foreach ($produtos as $produto)
            {

                if (!empty($produto->domain))
                {
                    $servico['id'] = $produto->id;
                    $servico['name'] = $produto->name;
                    $servico['domain'] = $produto->domain;

                    //seta o pid do produto
                    $servicoVo->setPid($produto->pid);

                    //vai buscar o gid do produto:
                    $groupId = $servicoDao->grupoServico($servicoVo);

                    //adiciona o group id ao array
                    $servico['gid'] = $groupId;
                }
            }
        }


        //devolve o array
        if (!empty($servico)) 
        {
            //echo '<pre>';
            //var_dump($servico);
            //echo '</pre>';
            return $servico;
        }

我可以在这里得到一些帮助吗? :d

谢谢, MEM

3 个答案:

答案 0 :(得分:1)

您每次都在重写ID,名称和域密钥。在生成$groupID

之后,请执行此操作
$servicio[] = array('id'     => $produto->id
                   ,'name'   => $produto->name
                   ,'domain' => $produto->domain
                   ,'gid'    => $groupId);

这会在数组中创建一个新条目,并使用您想要的新内容填充它。功能上与创建临时数组的其他示例相同,无需实际创建临时数组。

答案 1 :(得分:0)

您不断更改$servico的元素,而不是在其上添加元素。尝试做这样的事情:

$newItem = Array(); // create the new item we want to add to $servico

// ...populate it like you have been...
$newItem ['id'] = $produto->id;
$newItem ['name'] = $produto->name;
$newItem ['domain'] = $produto->domain;

//seta o pid do produto
$servicoVo->setPid($produto->pid);

//vai buscar o gid do produto:
$groupId = $servicoDao->grupoServico($servicoVo);

//adiciona o group id ao array
$newItem ['gid'] = $groupId;

$servico[] = $newItem; // <-- note this change here, we add the new item to the array

答案 2 :(得分:0)

如果您希望脚本存储所有迭代而不仅仅是最后一个迭代,那么您需要修改脚本的foreach嵌套循环以执行与此类似的操作:

foreach ($resposta->products as $produtos)
{
    foreach ($produtos as $produto)
    {

        if (!empty($produto->domain))
        {
            // Create a temporary array
            $newServico = array();

            $newServico['id'] = $produto->id;
            $newServico['name'] = $produto->name;
            $newServico['domain'] = $produto->domain;

            //seta o pid do produto
            $servicoVo->setPid($produto->pid);

            //vai buscar o gid do produto:
            $groupId = $servicoDao->grupoServico($servicoVo);

            //adiciona o group id ao array
            $newServico['gid'] = $groupId;

            // Append the new array to the $servico main array
            $servico[] = $newServico;
            unset($newServico);
        }
    }
}

希望能回答你的问题:)