带有对象的Foreach数组

时间:2011-12-13 13:17:12

标签: php arrays loops foreach

我是从服务中收到的:

stdClass Object ( 
             [TipoProdutoVO] => Array ( 
                                   [0] => stdClass Object ( 
                                          [entityStatus] => CURRENT [ID] => 23 [TIPO] => [DESCRICAO] => LENTE ACABADA [PARA_VENDA] => [INATIVO] => )
                                   [1] => stdClass Object (
                                          [entityStatus] => CURRENT [ID] => 32 [TIPO] => [DESCRICAO] => LENTES FABRICADAS [PARA_VENDA] => [INATIVO] => )
                                       )
                 )

包含strClass对象的数组。

我需要循环这些值并设置一些对象,如:

foreach ($res->ObterTipoProdutoParaWebSiteResult as $tipoproduto)
            {
                $tipoProdutoVO = new TipoProdutoVO();
                $tipoProdutoVO->ID = $tipoproduto[$x]->ID;
                $tipoProdutoVO->DESCRICAO = $tipoproduto[$x]->DESCRICAO;

                $lista_tipo_produtos[$x] = $tipoProdutoVO;
                $x++;
            }

正如预期的那样,由于结果是一个对象,它将循环一次,返回一个值,而不是预期的两个。

因为它是我尝试过的TipoProdutoVO对象列表:

foreach ($res->ObterTipoProdutoParaWebSiteResult->TipoProdutoVO as $tipoproduto)

但是我收到了这个错误:

  

致命错误:无法使用stdClass类型的对象作为数组   /opt/lampp/htdocs/lglentes/application/controllers/pedido.php在线   30

我该如何解决这个问题?提前谢谢。

2 个答案:

答案 0 :(得分:2)

在我的头顶,你正在使用“foreach”错误。你正在使用它作为“for”。 试试这个:

foreach ($res->ObterTipoProdutoParaWebSiteResult as $tipoproduto)
{
    $tipoProdutoVO = new TipoProdutoVO();
    $tipoProdutoVO->ID = $tipoproduto->ID;
    $tipoProdutoVO->DESCRICAO = $tipoproduto->DESCRICAO;

    $lista_tipo_produtos[] = $tipoProdutoVO;
}

答案 1 :(得分:0)

在我看来,您正在尝试做的是以下内容:

foreach ($res->ObterTipoProdutoParaWebSiteResult->TipoProdutoVO as $tipoproduto)
{
      $tipoProdutoVO = new TipoProdutoVO();
      $tipoProdutoVO->ID = $tipoproduto->ID;
      $tipoProdutoVO->DESCRICAO = $tipoproduto->DESCRICAO;
      $lista_tipo_produtos = $tipoProdutoVO;
}

这将循环遍历在对象属性'TipoProdutoVO'

上设置的数组