filtrare array cu array cu obiecte
Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
-
sterica
- Mesaje: 285
filtrare array cu array cu obiecte
Salutare,
Am un array de forma:
Cod: Selectaţi tot
arr1 = ['tip1', 'tip2', 'tip3', 'tip4', 'tip5']
si un array de forma:
Cod: Selectaţi tot
arr2 =
Array
(
[0] => stdClass Object
(
[denumireTip] => tip1
[valoare] => 8
)
[1] => stdClass Object
(
[denumireTip] => tip3
[valoare] => 14
)
[2] => stdClass Object
(
[denumireTip] => tip4
[valoare] => 2
)
)
Cum pot returna un array de obiecte de forma arr2 care sa contina toate denumirile de tip din arr1, iar unde nu sunt valori sa fie 0.
Multumesc!
MarPlo
Salut,
Incearca functia setArOb() din urmatorul exemplu (acest exemplu functioneaza pe PHP 7.2+):
Cod: Selectaţi tot
$ar_t =['tip1', 'tip2', 'tip3', 'tip4', 'tip5'];
$ar_ob =[
(object) array('denumireTip'=>'tip1', 'valoare'=>8),
(object) array('denumireTip'=>'tip3', 'valoare'=>14),
(object) array('denumireTip'=>'tip4', 'valoare'=>2)
];
function setArOb($ar_t, $ar_ob){
$re =[];
$n_t = count($ar_t);
$n_ob = count($ar_ob);
for($i=0; $i<$n_t; $i++){
$add =0;
for($i2=0; $i2<$n_ob; $i2++){
if($ar_ob[$i2]->denumireTip ==$ar_t[$i]){
$add =1;
break;
};
}
if($add ==0) $re[$i] =(object) array('denumireTip'=>$ar_t[$i], 'valoare'=>0);
else $re[$i] = $ar_ob[$i2];
}
return $re;
}
$ar_fin = setArOb($ar_t, $ar_ob);
//Check
var_dump($ar_fin);
sterica
pe server sun nevoit sa rulez 5.6, dar am laravel 5.4. O sa incerc cu collectiile laravel poate reusesc sa ii dau de cap.
MarPlo
Pentru PHP 5.4+ incearca functia in varianta din urmatorul exemplu.
Cod: Selectaţi tot
// $ar_t - array simple [t1, t2, t3]
// $ar_ob - array of objects
function setArOb($ar_t, $ar_ob){
$re =[];
$n_t = count($ar_t);
$n_ob = count($ar_ob);
for($i=0; $i<$n_t; $i++){
$add =0;
for($i2=0; $i2<$n_ob; $i2++){
if($ar_ob[$i2]->denumireTip ==$ar_t[$i]){
$add =1;
break;
};
}
if($add ==0) $re[$i] =['denumireTip'=>$ar_t[$i], 'valoare'=>0];
else $re[$i] = $ar_ob[$i2];
}
return json_decode(json_encode($re));
}
$ar_t =['tip1', 'tip2', 'tip3', 'tip4', 'tip5'];
$ar_ob =[
['denumireTip'=>'tip1', 'valoare'=>8],
['denumireTip'=>'tip3', 'valoare'=>14],
['denumireTip'=>'tip4', 'valoare'=>2]
];
$ar_ob = json_decode(json_encode($ar_ob));
$ar_fin = setArOb($ar_t, $ar_ob);
//Check
var_dump($ar_fin);
sterica
Am gasit si o varianta cu unele laravel:
Cod: Selectaţi tot
$arr2 = collect($arr1)->map(function ($item) use($arr2) {
$foo = collect($arr2)->first(function ($el) use($item) {
return $el->denumireTip == $item;
});
if (!$foo) {
return [denumireTip' => $item, 'valoare' => 0];
}
return $foo;
});
Pentru cine foloseste un laravel de versiune mai noua, in loc de first se poate folosi find.
Subiecte similare
-
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...
-
valori unice din array cu obiecte
JavaScript - jQuery - Ajax
Primul mesaj
Salutare,
Am un array de forma:
Incerc sa salvez intr-un array toate Id-urile de judet unice, de forma: ?
Am incercat sub forma:
let...
Ultimul mesaj
Multumesc mult pentru ajutorul acordat!
-
adaugare element nou intr-un array de obiecte
PHP - MySQL - XML
Primul mesaj
Salutare,
Am un array de obiecte sub forma aceasta:
$sql =
si un aray de forma aceasta:
$tipuri =
Cum pot adauga in primul array inca...
Ultimul mesaj
primesc o eroare pe linia json_decode($sql, true); , eroare este: json_decode() expects parameter 1 to be string, array given
Am rezolvat problema...
-
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 =...
-
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....
-
Id distinct cu insumare valori din array
PHP - MySQL - XML
Primul mesaj
Salutare,
Am un array de obiecte de forma:
$arr =
Cum pot face un array de obiecte cu id-uri distincte dar cu suma pentru cantitate si...
Ultimul mesaj
multumesc foarte mult de ajutor