Jump to content
  • 0
dearclexa

Agrupar valores de um array PHP

Question

Estou tentando manipular um array e agrupar os dados de produtos por nome de fornecedor igual.
 
A minha array retorna os produtos que eu tenho por fornecedor, quando o mesmo fornecedor tem mais de um produto ele me retorna em arrays separadas, e gostaria de agrupar esses dados.

Tentei de algumas formas, porém sem sucesso.

 

Retorno do meu array:

Array 
( 
    [nrochamado] => 10780 
    [cnpjFornecedor] => 111111111000111
    [nmFornecedor] => FORNECEDOR TESTE 01 
    [cdproduto] => ML2 
    [nmproduto] => ESCOVA   
    [quantidade] => 10 
    [unidade] => UN
    [vlfornecedor] => .00000 
    [dtnecessidade] => 30/04/2021 
    [dtentrega] =>  
) 
Array 
( 
    [nrochamado] => 10780 
    [cnpjFornecedor] => 111111111000111
    [nmFornecedor] => FORNECEDOR TESTE 01
    [cdproduto] => EV1 
    [nmproduto] => PANO DE LIMPEZA      
    [quantidade] => 5 
    [unidade] => UN 
    [vlfornecedor] => .00000 
    [dtnecessidade] => 30/04/2021 
    [dtentrega] => 
    
) 

Como espero que retorne:

Array 
( 
    [nrochamado] => 10780
    [cnpjFornecedor] => 111111111000111
    [nmFornecedor] => FORNECEDOR TESTE 01 
    [produtosItens] => 
     Array(
        [cdproduto] => ML2 
        [nmproduto] => ESCOVA   
        [quantidade] => 10 
        [unidade] => UN
        [vlfornecedor] => .00000 
        [dtnecessidade] => 30/04/2021 
        [dtentrega] =>
    )
    (
        [cdproduto] => EV1 
        [nmproduto] => PANO DE LIMPEZA      
        [quantidade] => 5 
        [unidade] => UN 
        [vlfornecedor] => .00000 
        [dtnecessidade] => 30/04/2021 
        [dtentrega] => 
    )
        
) 

É possível ?

Share this post


Link to post
Share on other sites

1 answer to this question

Recommended Posts

  • 0

Você pode fazer a chave produtoItens receber o array de produtos. 

Por exemplo.

 

$produtos = [
    'info4' => 'd',
    'info5' => 'e',
    'info6' => 'f'
];

$dados = [
    'info1' => 'a',
    'info2' => 'b',
    'info3' => 'c',
    'novoArray' => $produtos
];

A saída seria essa

array(4) { ["info1"]=> string(1) "a" 
           ["info2"]=> string(1) "b" 
           ["info3"]=> string(1) "c" 
           ["novoArray"]=> array(3) 
            { 
             ["info4"]=> string(1) "d" 
             ["info5"]=> string(1) "e" 
             ["info6"]=> string(1) "f" 
            } 
          }

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Sapinn
      Opa galera. Então depois que eu comecei a usar cookies no meu sistema o seguinte erro está acontecendo Cannot modify header information - headers already sent by não sei exatamente o que é e preciso de ajuda. O erro ocorre quando eu verifico se a caixa "mantenha-me conectado" é marcada então eu faço uma verificação direto no index.
      <?php     session_start();              include '../app/configuracao.php';         include '../app/autoload.php';         include '../app/Controllers/Admins.php';         $rotas = new Rota();         $db = new DataBase();         $control = new Admins();         if(isset($_COOKIE['acesso'])){             $db->query('select * from admins where acesso = :acesso');             $db->bind('acesso',$_COOKIE['acesso']);             $db->resultado();                  if($db->resultado()){                 $control->fazLogin(isset($db->resultado()->email), isset($db->resultado()->senha));             }         }            ?>  
    • By Jack Oliveira
      Ola pessoal boa noite preciso salvar umas coisas no banco de dados usando ao clicar no botão que esteja aparecendo sem que recarregue a página
       
      Seria isso aqui
       
      HTML do botão
      <div class="btn-group"> <a href="javascript:void(0)" class="rate-btn toggole-contnet"> <i class="fa fa-thumbs-o-up" aria-hidden="true"></i> Sim </a> <a href="javascript:void(0)" class="rate-btn toggole-contnet"> <i class="fa fa-thumbs-o-down" aria-hidden="true"></i> Não </a> </div> No PHP para salvar no banco esta da seguinte forma.
      <?php if(isset($_POST['AvaliComentario'])) { // Se o cookie ainda não foi setado $cookie = isset($_COOKIE["avali_comentario_".$Comentario['id']]) ? $_COOKIE["avali_comentario_".$Comentario['id']] : null; if (!isset($cookie)) { $Adicionar = array( 'comentario_id' => $Comentario['id'], 'up' => post('up'), 'down' => post('down') ); $Query = DBCreate('avali_comentario', $Adicionar); // Se for um sucesso a query if ($Query) { // Seta um cookie setcookie("avali_comentario_".$Comentario['id']."", true, time()+60*60*24*6004); // Retorna false, ou seja, sucesso echo false; Redireciona(''.$URLSHARE.''); }else{ //AbreAlerta("Erro! Ouve um erro ao ".$dados['titulo']."!"); //Redireciona(''.$URLSHARE.''); } }else{ //Sweet('Atenção!!!', 'Você já deu sua Curtida para '.$dados['titulo'].'!', 'warning', 'Fechar'); //AbreAlerta("Ops! Você já deu sua Curtida para ".$dados['titulo']."!"); //Redireciona(''.$URLSHARE.''); } } Só preciso para quando clicar uns dos botão ele salvar sem precisar carregar a página...
       
      Se ter um forma diferente para fazer fico grato pelas dicas que puderem dar ai..
       
       
    • By mark1978
      Boa noite srs, tem o código abaixo e esta funcionando normal e carregando o Qrcode no HTML na soma.
      Porém gostaria de alterar e que fosse da seguinte forma:
      Se "totalServico" for menor que "totalProdutos" e diferente de zero então carregue o Qr Code com esse valor
      Se não o valor for "0,00" carregue o valor "totalProdutos". Essa finalidade é para ter uma opção de desconto.
       
      <?php use Piggly\Pix\StaticPayload; class Os_model extends CI_Model { public function getProdutos($id = null) { $this->db->select('produtos_os.*, produtos.*'); $this->db->from('produtos_os'); $this->db->join('produtos', 'produtos.idProdutos = produtos_os.produtos_id'); $this->db->where('os_id', $id); return $this->db->get()->result(); } public function getServicos($id = null) { $this->db->select('servicos_os.*, servicos.nome, servicos.preco as precoVenda'); $this->db->from('servicos_os'); $this->db->join('servicos', 'servicos.idServicos = servicos_os.servicos_id'); $this->db->where('os_id', $id); return $this->db->get()->result(); } public function valorTotalOS($id = null) { $totalServico = 0; $totalProdutos = 0; if ($servicos = $this->getServicos($id)) { foreach ($servicos as $s) { $totalServico = $totalServico + $s->preco; } } if ($produtos = $this->getProdutos($id)) { foreach ($produtos as $p) { $totalProdutos = $totalProdutos + $p->subTotal; } } return ['totalServico' => $totalServico, 'totalProdutos' => $totalProdutos]; } public function getQrCode($id, $pixKey, $emitente) { if (empty($id) || empty($pixKey) || empty($emitente)) { return; } $result = $this->valorTotalOS($id); $amount = round(floatval($result['totalServico'] + $result['totalProdutos']), 2); if ($amount <= 0) { return; } $pix = (new StaticPayload()) ->applyValidCharacters() ->applyUppercase() ->setPixKey(getPixKeyType($pixKey), $pixKey) ->setMerchantName($emitente->nome, true) ->setMerchantCity($emitente->cidade, true) ->setAmount($amount) ->setTid($id) ->setDescription(sprintf("%s OS %s", $emitente->nome, $id), true); return $pix->getQRCode(); } }  

    • By manolegal
      Olá amigos(as) do Fórum.
      Tenho um número inteiro no PHP e preciso inseri-lo no Postgresql com 02 casas decimais.
      Defini o campo no Postgresql do tipo numeric(14,2)
      O valor está assim no PHP:
      2961966 Preciso gravar no BD da seguinte maneira:
      29619.66 Porém está gravando da seguinte forma:
      2961966.00 Tentei utilizando number_format, porém não consegui:
      $numero_bd = number_format($numero, '.', ''); $numero_bd = number_format($numero,2,"."); $numero_bd = number_format($numero,2,","numerovalor_ref_15,2,",","."); Caso alguém possa me ajudar, desde já agradeço.
    • By dayvidham
      Olá, atualmente faço parte de uma comunidade brasileira que está imersa em um projeto DeFi de um Token que roda na rede BSC.
      Temos um Token chamado SkyRocketSR criado a 31 dias e ja somos mais de 5000 pessoas interessadas no seu sucesso.
      Estamos em busca de programadores, designers e todos que poderem somar à comunidade de alguma forma.
      Alguém gostaria de saber mais do projeto e quem sabe compor a equipe da linha de frente já que somos uma comunidade?
      Obrigado e contamos com você.

      https://skyrocketsr.com/en/

      Aqui há mais sobre nós!
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.