2016-11-16 124 views
1

我在PHP兩個數組:合併兩個數組並顯示在一個表中

$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 
    ) 
) 

如何顯示在表是這樣的:

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

等等...

我試着用函數arrray結合:

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

但是這個功能從kolicina刪除重複。如何獲得具有相同價值kolicina的重複的好html表?

+0

嘗試['array_merge()'](http://php.net/manual/en/function.array-merge.php) – Xorifelse

回答

0

你並不需要使用array_combine。只需使用foreach迭代其中一個數組,然後使用索引(在您的情況下:$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

編輯: 您可以添加一些邏輯來處理,其中兩個陣列可能會不同長度的情況下 - 如果是這樣的話,你可能不希望顯示錶,萬一有將丟失的數據(或嘗試查找數組$kolicina中不存在的元素時,至少會出現錯誤)。爲此,請比較每個陣列上的count()的值。

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

工程巨大。 Thansk男人,你是awsome – user3672604

0

array_combine用於具有鍵和數組值的數組,並且您希望創建具有相應鍵和值的新數組。 $kolicina不是密鑰,所以沒有理由使用它。因爲關聯數組只能有一個元素具有相同的鍵,所以會丟失重複項。

你只需要遍歷數組索引,然後從兩個數組訪問元素:

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>'; 
}