Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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;
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[] = $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?