ahsc 1 Denunciar post Postado Outubro 15, 2010 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
ahsc 1 Denunciar post Postado Outubro 19, 2010 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