2016-11-16 9 views
1

に二つの配列やショーを組み合わせる:...私はPHPの二つのアレイ持ってテーブル

kolicina | kodproizvoda | imeProizvoda |jedinica | cijena 
    5  |  2  | fanta  | litra | 7 
    7  |  1  | coca cola |litra | 15 

など

をこのようにテーブルに表示する方法を

$kolicina =Array ([0] => 5 [1] => 7 [2] => 5 [3] => 7) 

$array =Array ( 
    [0] => Array ( 
     [kodProizvoda] => 2 
     [imeProizvoda] => Fanta 
     [jedinica] => litra 
     [cijena] => 7 
    ) 
    [1] => Array ( 
     [kodProizvoda] => 1 
     [imeProizvoda] => Coca Cola 
     [jedinica] => litra 
     [cijena] => 15 
    ) 
    [2] => Array ( 
     [kodProizvoda] => 3 
     [imeProizvoda] => Sprite 
     [jedinica] => litra 
     [cijena] => 17 
    ) 
    [3] => Array ( 
     [kodProizvoda] => 5 
     [imeProizvoda] => Juice 
     [jedinica] => litra 
     [cijena] => 14 
    ) 
) 

を私は関数arrray結合しようと試みた:

しかし、この関数は重複をkolicinaから削除します。どのように同じ値kolicinaと重複して良いhtmlテーブルを取得するには?

+0

素晴らしい作品 – Xorifelse

答えて

0

あなたはarray_combineを使用する必要はありません。 foreachを使用して配列の1つを繰り返し、インデックス(あなたの場合は:$code)を使用して、他の配列の関連要素を探します。以下の例を参照してください。

ループ外に設定した変数の代わりにイテレーターインデックス$codeを使用し、各イテレーション(つまり$brojac)の後に最初のインデックス(0)から始まり、最後のインデックスインデックス(すなわち、配列の長さ-1)。

foreach ($array as $code => $name) { 
    $name= implode("</td><td>", $name); 
    echo '<tr>'; 
    echo '<td> <input type="number" id="'.$kolicina[$code].'" class="kol" name="kolicina[]" value="'.$code.'">'.$kolicina[$code].'</td>'; 
    echo '<td> '.$name.'</td>'; 
    echo '<td id="iznostbl'.$code.'"> </td>'; 
    echo '</tr>'; 
} 

this phpfiddleをご覧ください。

編集: 次の2つの配列が異なる長さをしている可能性があるケースを処理するためにいくつかのロジックを追加することができます - それがそうであった場合は、テーブルを表示したくない場合があります、ケースには欠けているデータが存在することになる(または存在しない配列$kolicinaの要素を見つけようとすると、少なくともエラーが発生する可能性があります)。このために、各配列のcount()の値を比較してください。

if (count($array) == count($kolicina)) { 
    //show the table 
} 
else { 
    //show a message about missing data? or some other action 
} 
+0

(http://php.net/manual/en/function.array-merge.php)[ 'array_merge()']試してみてください。 Thansk manあなたはawsomeです – user3672604

0

array_combineは、キーの配列と値の配列を持ち、対応するキーと値を持つ新しい配列を作成する場合に使用します。 $kolicinaはキーではないので、これを使う理由はありません。連想配列は同じキーを持つ要素を1つしか持てないため、重複を失います。

あなただけの配列インデックスを反復して、両方の配列から要素にアクセスする必要があります。

foreach ($kolicina as $brojac => $code) { 
    $row = $array[$brojac]; 
    echo '<tr>'; 
    echo '<td> <input type="number" id="'.$brojac.'" class="kol" name="kolicina[]" value="'.$code.'"></td>'; 
    echo "<td>{$row['kodProizvoda'}</td><td>{$row['imeProizvoda'}</td><td>{$row['jedinica'}</td><td>{$row['cijena'}</td>"; 
    echo '</tr>'; 
} 
関連する問題