Id distinct cu insumare valori din array
Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
-
sterica
- Mesaje: 285
Id distinct cu insumare valori din array
Salutare,
Am un array de obiecte de forma:
Cod: Selectaţi tot
$arr = [
{ 'id': 1, 'cantitate': 30, 'valoare': 200 },
{ 'id': 1, 'cantitate': 35, 'valoare': 10 },
{ 'id': 1, 'cantitate': 3, 'valoare': 200 },
{ 'id': 2, 'cantitate': 30, 'valoare': 200 },
{ 'id': 3, 'cantitate': 65, 'valoare': 50 },
{ 'id': 3, 'cantitate': 65, 'valoare': 50 }
]
Cum pot face un array de obiecte cu id-uri distincte dar cu suma pentru cantitate si valoar?
Array-ul final sa arate de forma:
Cod: Selectaţi tot
$arrFinal = [
{ 'id': 1, 'cantitate': 68, 'valoare': 410 },
{ 'id': 2, 'cantitate': 30, 'valoare': 200 },
{ 'id': 3, 'cantitate': 130, 'valoare': 100 },
]
Multumesc!
MarPlo
Salut,
Poti sa folosesti functia din urmatorul exemplu:
Cod: Selectaţi tot
function arrSumDist(array $arr){
$nr_ar = count($arr);
$arr2 =[];
$re =[];
for($i=0; $i<$nr_ar; $i++){
$id = $arr[$i]['id'];
$cantitate = $arr[$i]['cantitate'];
$valoare = $arr[$i]['valoare'];
if(!isset($arr2[$id])) $arr2[$id] =['cantitate'=>$cantitate, 'valoare'=>$valoare];
else $arr2[$id] =['cantitate'=>($arr2[$id]['cantitate']+$cantitate), 'valoare'=>($arr2[$id]['valoare']+$valoare)];
}
foreach($arr2 as $k=>$v) $re[] =['id'=>$k, 'cantitate'=>$v['cantitate'], 'valoare'=>$v['valoare']];
return $re;
}
$arr = [
[ 'id'=>1, 'cantitate'=>30, 'valoare'=>200 ],
[ 'id'=>1, 'cantitate'=>35, 'valoare'=>10 ],
[ 'id'=>1, 'cantitate'=>3, 'valoare'=>200 ],
[ 'id'=>2, 'cantitate'=>30, 'valoare'=>200 ],
[ 'id'=>3, 'cantitate'=>65, 'valoare'=>50 ],
[ 'id'=>3, 'cantitate'=>65, 'valoare'=>50 ]
];
$arr2 = arrSumDist($arr);
var_export($arr2) //check
sterica
multumesc foarte mult de ajutor
Subiecte similare
-
Concatenare valori din array intr-un singur element array
PHP - MySQL - XML
Primul mesaj
Salut, am urmatorul array
Array (
=> A1,A2,A3,A6,A8,A10,H8,H12
=> H13,H14,H15
=> K1,K2,K3
)
Cum as putea concatena toate...
Ultimul mesaj
Salut
Concatenarea elementelor unui array in php se poate face cu functia implode() .
Pentru exemplu tau ar merge asa:
$ar1 = ;
$ar2 =...
-
Setare valori din array in select tag
JavaScript - jQuery - Ajax
Primul mesaj
Salut am un array cu orele de functionare
$data = array (
'0400' => '04:00 AM',
'0430' => '04:30 AM',
'0500' => '05:00 AM',
'0530'...
Ultimul mesaj
Testeaza urmatorul cod.
Daca ceva mai trebuie schimbat, incearca si tu sa modifici dupa cum stii, in functie de ce vrei sa obtii.
Open:...
-
Separare array de obiecte în mai multe array-uri
JavaScript - jQuery - Ajax
Primul mesaj
Am un array de obiecte, si pentru crearea unui grafic trebuie să îl împart în 3 array-uri diferite. Cum se face cu JS?
const dataOverview = ;...
Ultimul mesaj
Este simplu, aplici functia map() .
var series1 = dataOverview.map(x => x.series1);
var series2 = dataOverview.map(x => x.series2);
var...
-
Adaugare array in acelasi array JS
JavaScript - jQuery - Ajax
Primul mesaj
Incerc sa adaug un array in acelasi array in javascript, Dar se pare ca nu functioneaza; al treilea element se adauga incontinuu.
Iata codul:
var...
Ultimul mesaj
Nu functioneaza cum vrei fiindca adaugi aceeași referință la array. De aceea, când array-ul se actualizează, cel din interior va fi si el actualizat....
-
Produsul Dot a doua array in Javascript
JavaScript - jQuery - Ajax
Primul mesaj
Cum se poate implementa eficient o metoda dotProduct (pentru a obține produsul Dot din două array) fără a importa alte biblioteci Javascript?
De...
Ultimul mesaj
Iată o metodă.
Se foloseste funcția map() pentru a crea un nou array cu rezultate înmulțite ale fiecărui index, apoi se aplica funcția reduce()...
-
parametru din array in query cu laravel
PHP - MySQL - XML
Primul mesaj
Salutare,
din frontend primesc urmatorul array:
$arrClienti =
dupa care ii fac implode
$idClienti = preg_replace('/ /i', '', implode( , ,...
Ultimul mesaj
Dupa multe sapaturi, am ajuns la concluzia ca nu se poate rula ca parametru o matrice. Doar daca parametrul cu matricea este rulat intr-un loop....