Ir para conteúdo

POWERED BY:

Arquivado

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

gremio10

[Resolvido] Retirar do Array

Recommended Posts

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

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

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

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

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

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

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

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

×

Informação importante

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