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
Mesaje: 4343
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
Mesaje: 285
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
Mesaje: 4343
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
Mesaje: 285
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...
-
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...
-
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
-
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()...
-
Cannot use object of type mysqli_result as array
PHP - MySQL - XML
Primul mesaj
Salut, m-am lovit de aceasta eroare in scriptul meu...
Cannot use object of type mysqli_result as array
<?php
include header.php ;...
Ultimul mesaj
Am vazut ca metoda executeQuery() nu transforma in vreun fel datele de la mysqli (cum am presupus ca le returneaza ca obiect) ci le returneaza direct...