Salut
Apropo de clasa pdo_mysqli, ieri am remediat o mica problema care putea sa apara la ea.
Nu permitea returnarea datelor din Select cand aceasta instructiune incepea cu altceva decat "SELECT", de exemplu cu o paranteza:
Cod: Selectaţi tot
( SELECT * FROM table ORDER BY id DESC LIMIT 12) ORDER BY id
Acum functioneaza corect, si e bine sa o preiei de pe site.
- Si acum la chestiunea din acest topic.
Fiecare colana /camp din baza de date are mai multe valori, cate una pt. fiecare rand; deci, ca sa ai $camp=>$valoare ar trebui sa selectezi un singur rand in care va fi acea $valoare, altfel $valoare e de fapt un alt array cu datele din randuri.
Ca sa compari doua array-uri asociative, in general se folosesc doua foreach() imbricate.
Din ce am intele ca vrei, pot sa dau acest exemplu:
Cod: Selectaţi tot
$ar1 =['k1'=>'c1', 'k2'=>'c2', 'k3'=>'c3'];
$ar2 =[ //returnat de pdo_mysqli
0=> ['c0'=>'v0', 'c1'=>'v1', 'c2'=>'v2', 'c3'=>'v3', 'c4'=>'v4'],
1=> ['c0'=>'x0', 'c1'=>'x1', 'c2'=>'x2', 'c3'=>'x3', 'c4'=>'x4']
];
$ar3 =[];
foreach($ar1 as $k=>$c){
foreach($ar2 as $row){
//if column $c in $row, add it in $ar3 with key $k
if(isset($row[$c])){
if(!isset($ar3[$k])) $ar3[$k] =[];
$ar3[$k][] = $row[$c];
}
}
}
var_export($ar3); // [k1'=>['v1', 'x1'], 'k2'=>['v2', 'x2'], 'k3'=>['v3', 'x3'] ]
Daca vrei altfel, mai bine sa dai un exemplu cum e primul array, cum e al doilea array (sau in baza de date) si cum vrei sa rezulte al treilea array.