Creare array asociativ din doua sql Select

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
sterica
Mesaje: 276

Creare array asociativ din doua sql Select

Salutare,
Am doua interogari query, prima este in mysql iar cealalta in mssql.
Prima interogare returneaza:
$row['COD_PRODUS'] si $row['CLASA']

A doua returneaza:
$row['COD_PRODUS'] si $row['CANTITATE']

Vreau sa corelez $row['CLASA'] cu $row['CANTITATE'] avand ca identificator $row['COD_PRODUS'].

Rezultat din primul query incerc sa il inserez intr-un while rezultand un array care are ca si cheie COD_PRODUS
si sa arate sub forma: $row['COD_PRODUS'] => $row['CLASA']

Pentru al doilea query vreau sa procedez la fel, sa am un array avand ca si cheie COD_PRODUS
si sa arate sub forma: $row['COD_PRODUS'] => $row['CANTITATE']

Ma gandesc (sper ca nu prea indraznet pentru php) ca avand cele doua array-uri cu chei la fel as putea corela $row['CLASA'] cu $row['CANTITATE']

Pentru inceput am incercat asa (codul de mai jos), insa nu functioneaza pentru ca se genereaza automat o cheie si imi face array-ul multidimensional:

Cod: Selectaţi tot

$sql = "Select.....";
$res = mysql_query($sql);

while ($row = mysql_fetch_array($res)) {
            $arr_clase [] = array ($row['COD_PRODUS'] => $row['CLASA']);
        }
        print_r ($arr_clase);
Multumesc!

MarPlo
Incearca asa in while():

Cod: Selectaţi tot

$arr_clase[$row['COD_PRODUS']] = $row['CLASA'];
Sau daca 'COD_PRODUS' se repeta, asa:

Cod: Selectaţi tot

$arr_clase[$row['COD_PRODUS']][] = $row['CLASA'];

sterica
In primul while am mers cu:

Cod: Selectaţi tot

$arr_clase[$row['COD_PRODUS']] = $row['CLASA'];
imi retunreaza un array de forma:

Cod: Selectaţi tot

[$row['COD_PRODUS']] => $row['CLASA']

In al doilea while am mers cu:

Cod: Selectaţi tot

$arr_clase[$row['COD_PRODUS']][] = $row['CANTITATE'];
si imi returneaza un array de forma:

Cod: Selectaţi tot

[$row['COD_PRODUS']] => Array ( [0] => $row['CANTITATE'] [1] => $row['CANTITATE'] [3] => $row['CANTITATE'])
Cum pot aloca fiecarui array din al doilea while $row['CLASA'] corespunzatoare $row['COD_PRODUS'] ?

Multumesc!

MarPlo
Incearca asa:
- in primul while am mergi cu:

Cod: Selectaţi tot

$arr1_clase[$row['COD_PRODUS']] = $row['CLASA'];
In al doilea while():

Cod: Selectaţi tot

if(isset($arr1_clase[$row['COD_PRODUS']])) $arr2_clase[$arr1_clase[$row['COD_PRODUS']]][] = $row['CANTITATE'];

sterica
Multumesc mult de ajutor, voi incerca aceasta varianta

sterica
Salutare,

revin cu o nelamurire cu privire la array-urile asociative:

Cod: Selectaţi tot

$arr1 = ['p1' => 'Produsul 1', 'p2' => 'Produsul 2', 'p3' => 'Produsul 3'];
$arr2 = ['p1' => '2lei', 'p2' => '3lei', 'p3' => '5lei'];


foreach ($arr1 as $index => $value){
    foreach ($arr2 as $i => $v) {
        echo $index. ': ' .$value. ' - ' . $v . '<br>';
    }
}

// p1: Produsul 1 - 2lei
// p2: Produsul 2 - 3lei
// p3: Produsul 3 - 5lei
Incerc sa afisez din cele doua array-uri sub forma din comentariul codului, insa codul de mai sus imi tripleaza valorile si nu inteleg de ce.

Multumesc!

MarPlo
Vezi codul din acest exemplu:

Cod: Selectaţi tot

$arr1 = ['p1' => 'Produsul 1', 'p2' => 'Produsul 2', 'p3' => 'Produsul 3'];
$arr2 = ['p1' => '2lei', 'p2' => '3lei', 'p3' => '5lei'];
$res ='';

foreach($arr1 as $k=>$v){
  $price = isset($arr2[$k]) ? $arr2[$k] :'No price';
  $res .= $k. ': ' .$v. ' - ' . $price . '<br>';
}

echo $res;

sterica
multumesc mult de ajutor, functioneaza!

Subiecte similare