Ir para conteúdo
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

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Claudia França
      Pessoal escrevi o código,  (  <style id=”antiClickjack”>body{display:important;}</style>
      <script type=”text/javascript”>
      if (self === top) {
      var antiClickjack = document.getElementById(“antiClickjack”);
      antiClickjack.parentNode.removeChild(antiClickjack);
      } else {
      top.location = self.location;
      }
      </script> ) em um site o head por exigência da empresa de cartão, mas tenho percebido que com um tempo o site para de acionar o java script para carregar outra pagina.  Isso aconteceu depois desse código. Eu tenho que escrever algo no corpo no site para isso nao mais acontecer e deixar o anticlick habilitado. ?
    • Por Mark Augusto
      Faço a chamada e executo o código, mas não sei como dar um laço nas datas
      setlocale(LC_ALL, "pt_BR", "pt_BR.iso-8859-1", "pt_BR.utf-8", "portuguese"); date_default_timezone_set('America/Sao_Paulo'); $date = date("m/y"); $nu = 0; $rating = $conexaoDB->query("SELECT * FROM calendar ORDER BY id ASC LIMIT 20"); while($star = $rating->fetch_array()){ $id_c = $star['id-post']; $critics = $conexaoDB->query("SELECT * FROM postagens WHERE id_post='$id_c' AND online='calendar'"); $cri = $critics->fetch_assoc(); $editorCric = $cri["id_editor"]; $idPostCric = $cri["id_post"]; $date1 = explode("/", $star["data"]); $reconf_data = $date1[1]."/".$date1[2]; $nu = $nu+1; chamei apenas o mês e o ano e agrupei com o mês e ano do array... mas não tem dado resultado, então fiz uma gabiarra provisória  para ordenar por id. 
    • Por Solo
      Boa noite  pessoal, estou com um problema, sou iniciante me php e estou em duvida com como posso fazer uma paginacao de produtos do banco de dados...... alguem poderia me ajudar ou me indicar um tutorial ???
       
      <?php
      error_reporting(0);
      ini_set(“display_errors”, 0 );
      require_once("conexao.php"); 
         $produtos = "SELECT produto_ID, nome_produto, imagem_produto, valor ";
          $produtos .= "FROM produto ";
          $resultado = mysqli_query($conecta, $produtos);
          if(!$resultado) {
              die("Falha na consulta ao banco");   
          }
      ?> 
       
       
       
      AONDE LISTA OS PRODUTOS 
       
       
       
          <div class="rowproducts">
          <div id="listagem_produtos2" class="">
            <?php while($linha=mysqli_fetch_assoc($resultado)) {   ?>
                       
                      <ul>
                          <div class="class22">
                          
                          <li>
                              
                              <img  class="img-responsive"  height="200" width="200" src="<?php echo $linha["imagem_produto"]?> "  >
                              </li>
                              
                              <li class="nproduto"><?php echo $linha["nome_produto"]?></li>
                               <li class="nproduto">R$ <?php echo $linha["valor"]?></li>
                          </div>
                          </ul>
                          
                          
                          
                          
                          
                          
                          
                      
                  <?php } ?>
                      
                      
                      
                    </div>
                    </div>
       
       
       
       
    • Por RooseveltDorea
      Bom dia a todos!
       
      Antes de vir para o fórum pesquisei quebrei a cabeça e mesmo assim não consegui. Então peço ajuda.
       
      Tenho uma aplicação, php com access, rodando perfeitamente em ambiente windows na redehost: sistescom.com.br/fc
       
      Qual o problema?
      Instalei o php 7 na minha máquina baixei a minha aplicação e vejam o resultado:
       
      ---
      Fatal error: Uncaught Error: Class 'COM' not found in C:\Apache24\htdocs\fc\connections\ADOConnection.php:41 Stack trace: #0 C:\Apache24\htdocs\fc\connections\Connection.php(54): ADOConnection->connect() #1 C:\Apache24\htdocs\fc\connections\ADOConnection.php(18): Connection->__construct(Array) #2 C:\Apache24\htdocs\fc\connections\ConnectionManager.php(224): ADOConnection->__construct(Array) #3 C:\Apache24\htdocs\fc\connections\ConnectionManager.php(84): ConnectionManager->getConnection('FichadeChamada_...') #4 C:\Apache24\htdocs\fc\connections\ConnectionManager.php(95): ConnectionManager->byId('FichadeChamada_...') #5 C:\Apache24\htdocs\fc\include\appsettings.php(697): ConnectionManager->getDefault() #6 C:\Apache24\htdocs\fc\include\dbcommon.php(90): include('C:\\Apache24\\htd...') #7 C:\Apache24\htdocs\fc\login.php(5): require_once('C:\\Apache24\\htd...') #8 {main} thrown in C:\Apache24\htdocs\fc\connections\ADOConnection.php on line 41
      ---
      Estou usando o phprunner para gerar minha aplicação.
      Não sou programador, estou aprendento PHP aos poucos.
       
      Muito obrigado a todos.
       
      Júnior
    • Por JeysonRomualdo
      <?php //conexão com banco de dados.   $pdo = new PDO("mysql:dbname=cadastro", "root", "");   ?>   <html> <head> <title>Autenticando Usuario</title> <script type="text/javascript"> function loginsussesfully() { setTimeout("window.location='painel.php'", 5000); } function loginfailed(){ setTimeout("window.location='login.php'", 5000); } </script> </head> <body>   <?php //capturando informaçoes digitadas pelo usuario $email = $_POST['email']; $senha = $_POST['senha']; $sql = "SELECT * FROM usuarios WHERE email = '$email' and senha = '$senha'"; $row = mysql_num_rows($sql); if ($row > 0) { session_start(); $SESSION['email'] = $_POST['email']; $SESSION['senha'] = $_POST['senha']; echo "<center>Você foi autenticado com susseco!</center>"; echo "<script>loginsuccesfully</script>"; } else{ echo "<center>Nome de usuario ou senha invalidos!</center>"; echo "<script>loginfailed</script>"; } ?>   </body>   </html> erro na linha 25... nao consigo identificar o que pode estar errado ou faltando
×

Informação importante

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