gremio10 14 Denunciar post Postado Março 2, 2011 Fala galera, estou com um problema com array... Utilizo aqui no trabalho o Zend Framework, e estou trabalhando para enviar via WebService valores para o Ipagare. Só que eu preciso enviar um array com os dados, mas eu tenho de separar os produtos que foram escolhidos, que está em um Array. Fiz assim : //Quantidade dos Produtos $_item = 0; $_qnt = array(); foreach($ipagareQuantidadeItem as $qnt){ $_item++; $_qnt["quantidade_item_{$_item}"] = "'{$qnt}'"; } Preciso que a chave do array tenha o nome do campo do XML, para que o Ipagare entenda o que estou enviando, o problema é que na hora de testar ele fica assim : Array ( [teste] => 1 [numero_itens] => 1 [0] => Array ( [codigo_item_1] => '20608' [codigo_item_2] => '0' ) [1] => Array ( [descricao_item_1] => 'Balança Digital Cozinha - Franke - Ref: FR-1028' [descricao_item_2] => 'FRETE' ) [2] => Array ( [quantidade_item_1] => '100' [quantidade_item_2] => '1' ) [3] => Array ( [valore_item_1] => '49200' [valore_item_2] => '3138' ) ) Alguem sabe como que eu posso fazer para colocar ele como chave ? Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Março 2, 2011 Posta o conteúdo (ou parte dele) de $ipagareQuantidadeItem para vermos a estrutura atual. Mas é quase certo que você precisará trabalhar com a key oferecida pelo foreach(). Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Março 2, 2011 Cara, esse $ipagareQuantidadeItem apenas recebe os itens escolhidos ... Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Março 2, 2011 Exato. Adicione um: print '<pre>'; print_r( $ipagareQuantidadeItem ); Logo antes do foreach e simule uma venda através dos seus formulários. Ao submeter você verá a estrutura que esta variável possui, podendo assim saber como manipular o array com foreach. Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Março 2, 2011 Ele me retorna um Objeto.... Std Object se não me engano... Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Março 2, 2011 Na verdade é stdClass Object. Mas não importa! Dá uma olhada nesse exemplo rápido: $obj = new stdClass; $obj -> name = 'Bruno Augusto'; $data = array(); foreach( $obj as $key => $value ) { $data[ $key ] = $value; } Um objeto stdClass é um objeto sem métodos, apenas propriedades. Quando você itera um stdClass e define a sintaxe "completa" do foreach, isto é, a que te retorna também a chave corrente, você consegue o resultado esperado. Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Março 2, 2011 Cara, obrigado pela atenção, amanhã quando chegar no trabalho testarei puxando a chave e o valor... Obrigado novamente. Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Março 3, 2011 Cara, fiz como você sugeriu... //Quantidade dos Produtos $_item = 0; $_qnt = array(); foreach($ipagareQuantidadeItem as $key => $qnt){ $_item++; $_qnt[$key] = "{$qnt}"; } mas só que ele retornou as chaves do array mesmo... Array( [0] => 100 [1] => 1 ) mais alguma dica pra me ajudar ? Brigadão... Compartilhar este post Link para o post Compartilhar em outros sites
Periscuelo 20 Denunciar post Postado Março 3, 2011 Amigo gremio, se pra você que sabe oque tem de ser feito está dificil, imagine pra quem não sabe como nós? ^_^ Que tal você dar um print_r como já disse nosso amigo Bruno em $ipagareQuantidadeItem e nos mostrar oque retorna e depois explicar como tem que ficar o array que você quer para podermos lhe ajudar? :huh: Abraços Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Março 3, 2011 Ok ok, foi mal, bom. Aqui está o array do $ipagareQuantidadeItem Array ( [0] => 100 [1] => 1 ) o que pretendo fazer, bom, para que eu possa enviar dados para o ipagare, eu crio um array com todos os valores que posso enviar. Só que como esses dados já são um array, ele possui a sua chave 0 e 1, precisaria fazer com que ao invés de 0 e 1 ter o nome do campo do XML. O que ocorre hoje é isso: Array ( [teste] => 1 [acao] => 2 [versao] => 2 [valor_total] => 556 [numero_itens] => 1 [0] => Array ( [codigo_item_1] => '20609' [codigo_item_2] => '0' ) [1] => Array ( [descricao_item_1] => 'Cadeira Policarbonato Eiffel Incolor - Cadeiras Policarbonato - Ref: RI-1013' [descricao_item_2] => 'FRETE' ) [2] => Array ( [quantidade_item_1] => 100 [quantidade_item_2] => 1 ) [3] => Array ( [valore_item_1] => '55600' [valore_item_2] => '000' ) [tipo_cliente] => 1 [codigo_cliente] => 1517 ) O que precisaria ser é : Array ( [teste] => 1 [acao] => 2 [versao] => 2 [valor_total] => 556 [numero_itens] => 1 [codigo_item_1] => '20609' [codigo_item_2] => '0' [descricao_item_1] => 'Cadeira Policarbonato Eiffel Incolor - Cadeiras Policarbonato - Ref: RI-1013' [descricao_item_2] => 'FRETE' [quantidade_item_1] => 100 [quantidade_item_2] => 1 [valore_item_1] => '55600' [valore_item_2] => '000' [tipo_cliente] => 1 [codigo_cliente] => 1517 ) Espero que tenha sido claro, e agradeço a paciência :D Ae galera, muito obrigado pela ajuda, consegui: O que fiz foi ao invez de criar novas variaveis para cada chave nos foreachs, eu mandei ele ir adicionando no meu array principal: $a = array( 'teste' => $ipagare->teste, 'estabelecimento' => $ipagare->estabelecimento, 'acao' => 2, 'codigo_pedido' => $shopOrderId, 'versao' => 2, 'valor_total' => $this->totalValue, 'codigo_pagamento' => $shopPaymentWayId, //Dados do Cartão 'numero_cartao' => $this->cardNumber, 'mes_validade_cartao' => $this->monthValidate, 'ano_validade_cartao' => $this->yearValidate, 'codigo_seguranca_cartao' => $this->securityCode, // 'numero_itens' => $this->ipagareNumeroItens, //Dados do Cliente 'tipo_cliente' => $ipagare->tipoCliente, 'codigo_cliente' => $this->shopOrder->user->id, //Dados do Cliente 'tipo_cliente' => $ipagare->tipoCliente, 'codigo_cliente' => $this->shopOrder->userId, 'nome_cliente' => $this->shopOrder->user->name, 'email_cliente' => $this->shopOrder->user->email, 'cpf_cnpj_cliente' => $this->shopOrder->user->cpf, ); //Código dos Produtos $_item = 0; foreach($ipagareCodigoItem as $codigo){ $_item++; $a["codigo_item_{$_item}"] = "'{$codigo}'"; } //Descricao dos Produtos $_item = 0; foreach($ipagareDescricaoItem as $desc){ $_item++; $a["descricao_item_{$_item}"] = "'{$desc}'"; } //Quantidade dos Produtos $_item = 0; foreach($ipagareQuantidadeItem as $qnt){ $_item++; $a["quantidade_item_{$_item}"] = "{$qnt}"; } //Valor dos Produtos $_item = 0; foreach($ipagareValorItem as $vlr){ $_item++; $a["valore_item_{$_item}"] = "'{$vlr}'"; } Assim, ele retornou a chave dentro do proprio array, sem que criasse um novo array. Obrigado pela ajuda ;) Compartilhar este post Link para o post Compartilhar em outros sites
Periscuelo 20 Denunciar post Postado Março 3, 2011 Amigo gremio, fiz uma função uma vez que transformava arrays multidimensionais em um unico array. Talvez seja mais simples e útil para você usar. De qualquer forma abaixo vai o link: Transforme Arrays Multi-Dimensionais em um Unico Array com PHP Abraços. Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Março 3, 2011 Show cara, muito interessante o teu código, você destroi forçadamente o array né... vou utiliza-lá futuramente... Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites