Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ahsc

[Resolvido] pegar elementos de uma array multidimensional

Recommended Posts

Alguém sabe como eu posso pegar os valores dessa array multidimensional?

Array
(
    [Pedido] => Array
        (
            [0] => Array
                (
                    [Codigo] => 999999
                    [Data] => 2005-01-17
                    [Cobranca] => BANCARIA
                    [PedidoCliente] => 
                    [Cliente] => 55555555555555555555
                    [NomeCliente] => xxxxxxxxxxxxxxxxxxxxxxxxxxx
                    [Representante] => 33
                    [NomeRepresentante] => xxxxxxxxxxxxxxxxxxxxx
                    [Observacao] => Foi verificado as condicoes do cliente e liberado
                    [Observacaoweb] => cliente bom, agilizar seu pedido
                    [CondPagamento] => 90, 0, 0, 0, 0, 0, 0, 0, 0, 0dias
                    [ValorTotal] => 8941.60000
                )

        )

    [Produtos] => Array
        (
            [0] => Array
                (
                    [Produto] => 061-1A
                    [NomeProduto] => yyyyyyyyyyyyyyyyyyyyyyyyyyyyy.
                    [Unidade] => M2
                    [Descricao] => yyyyyyyyyyyyyyyyyyyyyyyyyyyyyy.
                    [Tonalidade] => 0
                    [Bitola] => 0
                    [Preco] => 5.58000
                    [QtdePedida] => 2040.000
                    [QtdeCarregada] => 1020.000
                    [QtdeFaturada] => 1020.000
                    [QtdeCancelada] => 0.000
                    [QtdeCarteira] => 1020.000
                )

            [1] => Array
                (
                    [Produto] => 45101-1A
                    [NomeProduto] => yyyyyyyyyyyyyyyyyyyyyyyyy.
                    [Unidade] => M2
                    [Descricao] => yyyyyyyyyyyyyyyyyyyyy
                    [Tonalidade] => 0
                    [Bitola] => 0
                    [Preco] => 6.25000
                    [QtdePedida] => 520.000
                    [QtdeCarregada] => 448.000
                    [QtdeFaturada] => 448.000
                    [QtdeCancelada] => 72.000
                    [QtdeCarteira] => 0.000
                )

        )

)

Sendo que na array "Pedido" é o cabeçalho do pedido e na array "Produtos" são os produtos desse pedido.

 

Eu montei um script mais ou menos assim:

  foreach($resultado as $pedidos => $pedidoatual)
   {
	   foreach ($pedidoatual as $pedatual => $valor)
	   {
		   echo $valor;
		   foreach($valor as $valoritens =>$dados[])
		   {
			   //echo $valoritens.': '.$dados.'<br />';
			    echo $dados[0].'<br />';
				echo $dados[1].'<br />';
				
		   }
		   
	   }
   }

Onde eu desci três níveis da arry e no último foreach eu adicionei o campo de valores como uma array para que eu pudesse escolher qual dados apresentar.

 

Da forma que está, resolve mais ou menos meu problema uma vez que o cabeçalho contém apenas um item e os produtos podem conter mais de um. Assim eu gostaria de "Quebrar" essa array para que eu pudesse escolher onde por cada item da array.

 

Ex: Para pedidos

um foreach só para pegar os itens que estão na array de "pedido" e um outro para pegar os itens do pedido.

 

Tem como? Se alguém puder me ajudar eu agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvi o problema.

 

A solução

/*
primeiro eu verifico quantos itens tem na array com o método count do php.
lembrando que, no meu caso, foi utilizado um webservice com métodos e retornos pré-definidos.
esse código seria mais ou menos para um carrinho de compras. Uma array cuida dos dados do cliente e a outra dos produtos desse cliente
dessa forma temos a estrutura de uma array multidimensional.

a instanciação do objeto soap ficou assim:

$oSoapClient = new SoapClient("caminho_para_o_webservice.wsdl", array('encoding' => 'ISO-8859-1'));
$resultado = $oSoapClient->nomeDoMetodo(parametro1, parametro2);
assim basta contar quantas arrays existem no retorno e fazer um looping for, caso você queira retornar os valores em "lote"
ou escolher o que você queira exibir, quando a quantidade de itens é específica, como por exempo, um cabeçalho.
vejam exemplo abaixo
*/

      //a variável $resultado, armazena o objeto soap (array multidimensional). Desta forma, sabendo seus índices, eu consigo escolher quem eu quero pegar para exibir  
        echo $resultado['Pedido'][0]['Codigo'].' '; 
  	echo $resultado['Pedido'][0]['Data'].' '; 
  	echo $resultado['Pedido'][0]['Cobranca'].' '; 
	echo $resultado['Pedido'][0]['Cliente'].' ';
	echo $resultado['Pedido'][0]['NomeCliente'];

      //na array de produtos do pedido, eu crio um looping for para verificar seu conteúdo e depois mostrar seus dados
      
      //método count do php, para verificar quantas arrays existem dentro da array produtos para montar o looping for
       echo $loop =  count($resultado['Produtos']);

      //monta uma tabela para exibição dos dados
      echo '<table border = "0" width="500">';
      echo '<tr bgcolor="#c0c0c0">
   			<td>Produto</td>
			<td>Nome</td>
			<td>Unidade</td>
			<td>Ton</td>
			<td>Bit</td>
			<td>Preço</td>
			<td>Qtde</td>
			<td>Carregado</td>
			<td>Faturado</td>
			<td>Cancelado</td>
			<td>Carteira</td>
		 </tr>';
         //looping for para trazer os itens da arry Produtos e inserir na tabela
         for($i=0; $i<$loop;$i++)
         {
	   echo '<tr>
	   			<td>'.$resultado['Produtos'][$i]['Produto'].'</td>
				<td>'.$resultado['Produtos'][$i]['Descricao'].'</td>
				<td>'.$resultado['Produtos'][$i]['Unidade'].'</td>
				<td>'.$resultado['Produtos'][$i]['Tonalidade'].'</td>
				<td>'.$resultado['Produtos'][$i]['Bitola'].'</td>
				<td>'.$resultado['Produtos'][$i]['Preco'].'</td>
				<td>'.$resultado['Produtos'][$i]['QtdePedida'].'</td>
				<td>'.$resultado['Produtos'][$i]['QtdeCarregada'].'</td>
				<td>'.$resultado['Produtos'][$i]['QtdeFaturada'].'</td>
				<td>'.$resultado['Produtos'][$i]['QtdeCancelada'].'</td>
				<td>'.$resultado['Produtos'][$i]['QtdeCarteira'].'</td>
		     </tr>';
       }
   echo '</table>';

Alguém sabe como eu posso pegar os valores dessa array multidimensional?

Array
(
    [Pedido] => Array
        (
            [0] => Array
                (
                    [Codigo] => 999999
                    [Data] => 2005-01-17
                    [Cobranca] => BANCARIA
                    [PedidoCliente] => 
                    [Cliente] => 55555555555555555555
                    [NomeCliente] => xxxxxxxxxxxxxxxxxxxxxxxxxxx
                    [Representante] => 33
                    [NomeRepresentante] => xxxxxxxxxxxxxxxxxxxxx
                    [Observacao] => Foi verificado as condicoes do cliente e liberado
                    [Observacaoweb] => cliente bom, agilizar seu pedido
                    [CondPagamento] => 90, 0, 0, 0, 0, 0, 0, 0, 0, 0dias
                    [ValorTotal] => 8941.60000
                )

        )

    [Produtos] => Array
        (
            [0] => Array
                (
                    [Produto] => 061-1A
                    [NomeProduto] => yyyyyyyyyyyyyyyyyyyyyyyyyyyyy.
                    [Unidade] => M2
                    [Descricao] => yyyyyyyyyyyyyyyyyyyyyyyyyyyyyy.
                    [Tonalidade] => 0
                    [Bitola] => 0
                    [Preco] => 5.58000
                    [QtdePedida] => 2040.000
                    [QtdeCarregada] => 1020.000
                    [QtdeFaturada] => 1020.000
                    [QtdeCancelada] => 0.000
                    [QtdeCarteira] => 1020.000
                )

            [1] => Array
                (
                    [Produto] => 45101-1A
                    [NomeProduto] => yyyyyyyyyyyyyyyyyyyyyyyyy.
                    [Unidade] => M2
                    [Descricao] => yyyyyyyyyyyyyyyyyyyyy
                    [Tonalidade] => 0
                    [Bitola] => 0
                    [Preco] => 6.25000
                    [QtdePedida] => 520.000
                    [QtdeCarregada] => 448.000
                    [QtdeFaturada] => 448.000
                    [QtdeCancelada] => 72.000
                    [QtdeCarteira] => 0.000
                )

        )

)

Sendo que na array "Pedido" é o cabeçalho do pedido e na array "Produtos" são os produtos desse pedido.

 

Eu montei um script mais ou menos assim:

  foreach($resultado as $pedidos => $pedidoatual)
   {
	   foreach ($pedidoatual as $pedatual => $valor)
	   {
		   echo $valor;
		   foreach($valor as $valoritens =>$dados[])
		   {
			   //echo $valoritens.': '.$dados.'<br />';
			    echo $dados[0].'<br />';
				echo $dados[1].'<br />';
				
		   }
		   
	   }
   }

Onde eu desci três níveis da arry e no último foreach eu adicionei o campo de valores como uma array para que eu pudesse escolher qual dados apresentar.

 

Da forma que está, resolve mais ou menos meu problema uma vez que o cabeçalho contém apenas um item e os produtos podem conter mais de um. Assim eu gostaria de "Quebrar" essa array para que eu pudesse escolher onde por cada item da array.

 

Ex: Para pedidos

um foreach só para pegar os itens que estão na array de "pedido" e um outro para pegar os itens do pedido.

 

Tem como? Se alguém puder me ajudar eu agradeço.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.