Ir para conteúdo

POWERED BY:

Arquivado

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

pzt

Agrupar valor de array php

Recommended Posts

Olá, galera. 

 

Sou iniciante no php, tenho uma dúvida. Veja se podem me ajudar, por favor!

 

(
    [cd_produto] => 1
    [ds_produto] => SAPATENIS PEGADA
    [ds_longa] => SAPATENIS PEGADA MARINHO 170502G2
    [cd_marca] => 70
    [cd_cor] => 22
    [cd_tamanho] => 25
    [peso_liquido] => 0.700000
    [peso_bruto] => 0.700000
    [altura] => 12.000000
    [largura] => 21.000000
    [profundidade] => 32.000000
    [cubagem] => 0.00810000
    [vl_venda] => 140.90
    [qt_estoque] => 1.00
    [ds_categoria] => SAPATENIS
    [ds_cor] => MARINHO
    [ds_tamanho] => 43
)

(
    [cd_produto] => 1
    [ds_produto] => SAPATENIS PEGADA
    [ds_longa] => SAPATENIS PEGADA MARINHO 170502G2
    [cd_marca] => 70
    [cd_cor] => 22
    [cd_tamanho] => 26
    [peso_liquido] => 0.700000
    [peso_bruto] => 0.700000
    [altura] => 12.000000
    [largura] => 21.000000
    [profundidade] => 32.000000
    [cubagem] => 0.00810000
    [vl_venda] => 140.90
    [qt_estoque] => 2.00
    [ds_categoria] => SAPATENIS
    [ds_cor] => MARINHO
    [ds_tamanho] => 44
)

(
    [cd_produto] => 1
    [ds_produto] => SAPATENIS PEGADA
    [ds_longa] => SAPATENIS PEGADA MARINHO 170502G2
    [cd_marca] => 70
    [cd_cor] => 22
    [cd_tamanho] => 27
    [peso_liquido] => 0.700000
    [peso_bruto] => 0.700000
    [altura] => 12.000000
    [largura] => 21.000000
    [profundidade] => 32.000000
    [cubagem] => 0.00810000
    [vl_venda] => 140.90
    [qt_estoque] => 5.00
    [ds_categoria] => SAPATENIS
    [ds_cor] => MARINHO
    [ds_tamanho] => 45
)

 

Em cada chave, a descrição é a mesma, o valor também, mas alguns itens, como qt_estoque, ds_categoria, ds_cor e ds_tamanho, são diferentes. 

 

Eu precisaria agrupar tudo em um único array, quando a ds_longa for igual. 

 

Segue o script: 

$Select = new Select;
$Select->FullSelect('SELECT * FROM produto LEFT OUTER JOIN produto_categoria ON produto.cd_produto = produto_categoria.cd_produto LEFT OUTER JOIN categoria ON produto_categoria.cd_categoria = categoria.cd_categoria LEFT OUTER JOIN cor ON cor.cd_cor = produto.cd_cor LEFT OUTER JOIN tamanho ON tamanho.cd_tamanho = produto.cd_tamanho');

        if ($Select->getResult()):
            $Products = $Select->getResult();

            foreach ($Products as $Product):
			print_r($Product);
			endforeach;
		endif;

 

O que podem me ajudar?

Desde já, muito obrigado! 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Segue:

 

<?php

/*
#Exemplos criados
SAPATENIS PEGADA MARINHO 170502G2
SAPATENIS PEGADA LARANJA 170502G2
SAPATENIS PEGADA ROSA 170502G2
*/


$produtos = [ 			    
				[
					'cd_produto'   => '1',
					'ds_produto'   => 'SAPATENIS PEGADA',
					'ds_longa'     => 'SAPATENIS PEGADA MARINHO 170502G2',
					'cd_marca'     => '70',
					'cd_cor'       => '22',
					'cd_tamanho'   => '25',
					'peso_liquido' => '0.700000',
					'peso_bruto'   => '0.700000',
					'altura'       => '12.000000',
					'largura'      => '21.000000',
					'profundidade' => '32.000000',
					'cubagem'      => '0.00810000',
					'vl_venda'     => '140.90',
					'qt_estoque'   => '1.00',
					'ds_categoria' => 'SAPATENIS',
					'ds_cor'       => 'MARINHO',
					'ds_tamanho'   => '43'
				],	
				[
				    'cd_produto'   => '1',
				    'ds_produto'   => 'SAPATENIS PEGADA',
				    'ds_longa'     => 'SAPATENIS PEGADA MARINHO 170502G2',
				    'cd_marca'     => '70',
				    'cd_cor'       => '22',
				    'cd_tamanho'   => '26',
				    'peso_liquido' => '0.700000',
				    'peso_bruto'   => '0.700000',
				    'altura'       => '12.000000',
				    'largura'      => '21.000000',
				    'profundidade' => '32.000000',
				    'cubagem'      => '0.00810000',
				    'vl_venda'     => '140.90',
				    'qt_estoque'   => '1.00',
				    'ds_categoria' => 'SAPATENIS',
				    'ds_cor'       => 'MARINHO',
				    'ds_tamanho'   => '44'
				],
				[
				    'cd_produto'   => '1',
				    'ds_produto'   => 'SAPATENIS PEGADA',
				    'ds_longa'     => 'SAPATENIS PEGADA MARINHO 170502G2',
				    'cd_marca'     => '70',
				    'cd_cor'       => '22',
				    'cd_tamanho'   => '27',
				    'peso_liquido' => '0.700000',
				    'peso_bruto'   => '0.700000',
				    'altura'       => '12.000000',
				    'largura'      => '21.000000',
				    'profundidade' => '32.000000',
				    'cubagem'      => '0.00810000',
				    'vl_venda'     => '140.90',
				    'qt_estoque'   => '1.00',
				    'ds_categoria' => 'SAPATENIS',
				    'ds_cor'       => 'MARINHO',
				    'ds_tamanho'   => '45',
				],
				[
				    'cd_produto'   => '1',
				    'ds_produto'   => 'SAPATENIS PEGADA',
				    'ds_longa'     => 'SAPATENIS PEGADA LARANJA 170502G2',
				    'cd_marca'     => '70',
				    'cd_cor'       => '22',
				    'cd_tamanho'   => '27',
				    'peso_liquido' => '0.700000',
				    'peso_bruto'   => '0.700000',
				    'altura'       => '12.000000',
				    'largura'      => '21.000000',
				    'profundidade' => '32.000000',
				    'cubagem'      => '0.00810000',
				    'vl_venda'     => '140.90',
				    'qt_estoque'   => '1.00',
				    'ds_categoria' => 'SAPATENIS',
				    'ds_cor'       => 'MARINHO',
				    'ds_tamanho'   => '45',
				],
				[
				    'cd_produto'   => '1',
				    'ds_produto'   => 'SAPATENIS PEGADA',
				    'ds_longa'     => 'SAPATENIS PEGADA LARANJA 170502G2',
				    'cd_marca'     => '90',
				    'cd_cor'       => '22',
				    'cd_tamanho'   => '21',
				    'peso_liquido' => '0.700000',
				    'peso_bruto'   => '0.700000',
				    'altura'       => '12.000000',
				    'largura'      => '21.000000',
				    'profundidade' => '32.000000',
				    'cubagem'      => '0.00810000',
				    'vl_venda'     => '140.90',
				    'qt_estoque'   => '1.00',
				    'ds_categoria' => 'SAPATENIS',
				    'ds_cor'       => 'MARINHO',
				    'ds_tamanho'   => '45',
				],
				[
				    'cd_produto'   => '1',
				    'ds_produto'   => 'SAPATENIS PEGADA',
				    'ds_longa'     => 'SAPATENIS PEGADA ROSA 170502G2',
				    'cd_marca'     => '70',
				    'cd_cor'       => '22',
				    'cd_tamanho'   => '27',
				    'peso_liquido' => '0.700000',
				    'peso_bruto'   => '0.700000',
				    'altura'       => '12.000000',
				    'largura'      => '21.000000',
				    'profundidade' => '32.000000',
				    'cubagem'      => '0.00810000',
				    'vl_venda'     => '140.90',
				    'qt_estoque'   => '1.00',
				    'ds_categoria' => 'SAPATENIS',
				    'ds_cor'       => 'MARINHO',
				    'ds_tamanho'   => '45',
				]												
			];

$saida = []; // array vazia para tratamento do parâmetro ds_longa

foreach ($produtos as $key => $produto) {
	
	if(isset($saida[$produto['ds_longa']])) {

		//se encontrar adiciona na chave do ds_loga encontrado		
		array_push($saida[$produto['ds_longa']], $produto);
		
	} else  {
		
		//se não existir ele cria uma chave do ds_loga na $saida
		$saida[$produto['ds_longa']] = []; // cria o ds_loga como array vazio para receber os proximos via array_push
		array_push($saida[$produto['ds_longa']], $produto); // adiciona o array atual do foreach na chave criada
		
	}

} // foreach


// saida final
echo '<pre>';
var_dump($saida);
echo '</pre>';

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos do grupo, saudações e um feliz 2025.
       
      Estou com uma pequena dúvida referente a Teclas de Atalho.

      Quando o Caps Lock está ativado o Comando da Tecla de Atalho não funciona.
      ou seja:
      se estiver para letra minúscula ====> funciona
      se estiver para letra maiúscula ====> não funciona
       
      Como consigo evitar essa falha, tanto para Letra Maiúscula quanto Minúscula ?

      o Código está assim:
      document.addEventListener( 'keydown', evt => { if (!evt.ctrlKey || evt.key !== 'r' ) return;// Não é Ctrl+r, portanto interrompemos o script evt.preventDefault(); });  
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Humildemente peço desculpa por postar uma dúvida que tenho.

      Preciso salvar no MySql, os seguinte Registro:

      1 - Principal
      ====> minha dúvida começa aqui
      ==========> como faço para o Sistema Contar Automaticamente o que estiver despois do 1.____?
      1.01 - Matriz
      1.01.0001 - Estoque
      1.01.0002 - Oficina
      etc

      2 - Secundário
      2.01 - Loja_1
      2.01.0001 - Caixa
      2.01.0002 - Recepção
      etc
       
      Resumindo seria como se fosse um Cadastro de PLANO de CONTAS CONTÁBEIL.

      Grato,


      Cesar









       
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a orientação dos amigos.

      Preciso fazer um Relatório onde o usuário pode Gerar uma Lista com prazo para vencimento de: 15 / 20/ 30 dias da data atual.

      Tem como montar uma SQL para o sistema fazer uma busca no MySql por período ou dias próximo ao vencimento ?

      Tentei fazer assim, mas o SQL me traz tudo:
      $query = "SELECT faturamento.*, DATE_ADD(faturamento.dataVencimento, INTERVAL 30 DAY), fornecedor.* FROM faturamento INNER JOIN fornecedor ON fornecedor.idfornecedor = faturamento.id_fornecedor WHERE faturamento.statusFatur = 1 ORDER BY faturamento.idFaturamento $ordenar ";  
      Grato,
       
      Cesar
       
       
       
       
    • Por violin101
      Caros amigos, saudações
       
      Por favor, me perdoa em recorrer a orientação dos amigos, tenho uma dúvida.
       
      Gostaria de uma rotina onde o Sistema possa acusar para o usuário antes dos 30 dias, grifar na Tabela o aviso de vencimento próximo, por exemplo:
       
      Data Atual: 15/11/2024
                                           Vencimento
      Fornecedor.....................Data.....................Valor
      Fornecedor_1...........01/12/2024..........R$ 120,00 <== grifar a linha de Laranja
      Fornecedor_1...........01/01/2025..........R$ 130,00
      Fornecedor_2...........15/12/2024..........R$ 200,00 <== grifar a linha de Amarelo
      Fornecedor_2...........15/01/2025..........R$ 230,00
      Fornecedor_3...........20/12/2024..........R$ 150,00
       
      Alguém tem alguma dica ou leitura sobre este assunto ?

      Grato,
       
      Cesar
×

Informação importante

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