Assign two tables to php array and display the array

How to assign two tables to one array and then display it using a foreach loop:

TABLE: 1

pcode       rate
------------------------------
aaa         10
bbb          5
ccc          4

TABLE: 2

 pcode       sales
------------------------------
aaa         250
bbb         100
ccc          40

      

I tried:

$final=array();
foreach($table1 as $t1)
        $final [$t1->code][0] = $t1->rate;

    foreach($table2 as $t2)
        $final [$t2->code][1] = $t2->sales;




    foreach ($final as $c=>$v){
        echo "$c $v[0]  $v[1]" . "\n";   \\error
    }

      

Please suggest?

+3


source to share


2 answers


    $final=array();
    foreach($table1 as $t1)
            $final [$t1->code]['rate'] = $t1->rate;

        foreach($table2 as $t2)
            $final [$t2->code]['sale'] = $t2->sales;
$table='<table><tr>
<td>name</td>
<td>Sale</td>
<td>Purcahse</td>
</tr>';


    foreach ($final as $c=>$v){
$table.='<tr>
<td>'.$c.'</td>
<td>'.((isset($v['rate']))?$v['rate']:'').'</td>
<td>'.((isset($v['sale']))?$v['sale']:'').'</td>
</tr>';

    }
$table.='</table>';

      



+1


source


change sql like this

SELECT t1.pcode, t1.rate, t2.sales FROM table1 as t1 INNER JOIN table2 t2 ON t1.pcode = t2.pcode"



If you cannot change sql it is better to use array_merge_recursive.

$tb1 = codeTokey($table1, 'rate');
$tb2 = codeTokey($table2, 'sales');
//change object to 
function codeToKey($arr, $valkey){
    $ret = array();
    foreach($arr as $a){
        $ret[$a->code] = $a->$valkey;
    }
    return $ret;
}

$fin = array_merge_recursive($tb1, $tb2);

      

+1


source







All Articles