Ir para conteúdo

Arquivado

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

daniramon

Somar valores de um Array com Condição

Recommended Posts

Olá Pessoal, estou com um problema simples, porém não estou conseguindo resolver, tenho a seguinte array:

/* $array_frete_calc = 
0:{partner_id: 2, weight: 5.6, length: 140, height: 140, width: 140}
1:{partner_id: 2, weight: 2.4, length: 75, height: 75, width: 75}
2:{partner_id: 2, weight: 2.4, length: 75, height: 75, width: 75}
3:{partner_id: 1, weight: 1.0, length: 75, height: 75, width: 75}
*/

Em teoria, fiz o foreach abaixo na intenção de somente agrupar os partner_id que forem iguais, e somar os campos weight, length, height e width.

 

Como verifico se existe o campo partner_id = > $value['partner_id'] dentro do array $array_frete_calc ???

 

Podem me ajudar? O ele está funcionando certinho.

$array_frete_calc = array();

foreach($products_group_qtde as $key => $value) {  

	// Como verifico se existe o campo partner_id = > $value['partner_id'] dentro do array $array_frete_calc

	if(){



	// return false
	} else {

	array_push($array_frete_calc, 
        array( 
        "partner_id" => $value['partner_id'],  
        'weight'=> $value['weight'],
        'length'=> $value['length'],
        'height'=> $value['height'],
        'width'=> $value['width']
        )
		);
	}

}
return $array_frete_calc;

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá @daniramon.

 

Você precisa saber quais IDs já estão cadastrados... mas note que cada ID está em um array individual.

Uma forma de fazer isso seria extrair todos os IDs em cada iteração utilizando array_column(), mas isso seria pouco eficiente, uma vez que estamos dentro de um loop, certo?

 

Então você deveria fazer manualmente essa extração e verificação, criando um array separado, próprio para isso:

 

1 - Vamos inicializar o array junto com o $array_frete_calc:

$array_frete_calc = array();//após essa linha... coloque:
$ids_presentes = array();

 

2 - Precisamos alimentar o array de IDs presentes na coleção:

$ids_presentes[] = $value[ 'parent_id' ];//perceba que adicionamos aqui apenas os IDs

//antes dessa linha:
array_push($array_frete_calc,

 

3 - Agora criamos o if que antes estava incompleto:

if ( in_array( $value[ 'partner_id' ], $ids_presentes ) ){

 

Sacou?

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Boa tarde, pessoal.
      Espero que todos estejam bem.
       
      Seguinte:
      Tenho a seguinte consulta:
       
      $usuarios= "SELECT * FROM usuarios";
      $query= mysqli_query($conexao, $usuarios) or die ("Usuário não encontrado");
      $usuario = mysqli_fetch_array($query);
       
      Quero pegar apenas o campo 'nome' da tabela 'usuarios' e colocar todos os resultados da seguinte forma:
       
      $nomes = array("Rafael", "João", "Maria", "Pedro", "Patricia", "Camila");
       
      Agradeço desde já.
      Abs
       
       
    • Por Willian Simione
      Boa Noite, alguem poderia me ajudar em uma situação, estou tetnando gravar os dados da tela abaixo, porem nao estou conseguindo montar o jeito certo pra ele gravar todos os dados de uma vez

    • Por Giovanird
      Tenho uma tabela com a coluna média (valor decimal) .
       
      cod | media | cod_sala 1 1,98 5 2 2,34 2 3 1,32 5 4 2,51 3 5 1,65 1 6 2,78 5 7 4,95 4 8 0,75 4 9 1,23 1 10 1,63 2 11 1,55 3 Preciso no select MYSQL ou dentro do foreach multiplicar os valores do campo média, de acordo com o fitro por cod_sala
      Exemplo pelo cod_sala: 5
      Sendo o resultdo final: 1,98 * 1,32 * 2,78 = 7,26

      Desde já agradeço!
    • Por mateus.andriollo
      Existe uma forma de fazer um IF na select e comparar com Array de dados?
       
      algo como
       
      Select if( in_array(idCliente,'1,2,3,4,5')=true,'Tem','Não') ) as cliente Não consigo usar inner ou where pois esse array é algo q tem varias regras...
       
      Precisava saber se existe uma função assim em MySQL
    • Por mateus.andriollo
      Existe uma forma de fazer um IF na select e comparar com Array de dados?
       
      algo como
       
      Select if( in_array(idCliente,'1,2,3,4,5')=true,'Tem','Não') ) as cliente Não consigo usar inner ou where pois esse resultado do array é algo q tem varias regras...
       
      Precisava saber se existe uma função assim em MySQL
×

Informação importante

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