我在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 combine:
$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中删除重复项。如何获得具有相同值的重复项的好的html表kolicina?
答案 0 :(得分: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>';
}
答案 1 :(得分: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>';
}
修改强>
您可以添加一些逻辑来处理两个数组可能具有不同长度的情况 - 如果是这种情况,您可能不希望显示表,以防数据丢失(或者至少在尝试时可能出现错误)在数组$kolicina
中找到一个不存在的元素。为此,请比较每个数组上count()
的值。
if (count($array) == count($kolicina)) {
//show the table
}
else {
//show a message about missing data? or some other action
}