Foreach数组与对象


Foreach array with objects

我从一个服务接收到这个:

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++;
            }

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

由于它是tipoproductovo对象的列表,我试图:

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

但是我得到这个错误:

致命错误:不能使用stdClass类型的对象作为数组/opt/lampp/htdocs/lglentes/application/controllers/pedido.php30

我该如何解决这个问题?

在我的脑海里,你用错了"foreach "。你把它当作"for"。试试这个:

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

在我看来,你想做的是:

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

循环遍历对象属性' tipoproductovo '上设置的数组