我有以下多维数组:
<? $array = array(0 => 2, 3 => 1, 5 => 1 );
打印时看起来像这样:
Array ( [0] => 2 [3] => 1 [5] => 1 ); //the value in brackets is the shoe size
数组的第一部分是“鞋子尺寸”,数组的第二部分是库存中可用的数字。
我正在尝试打印出一张列出所有鞋码的表格(即使不在数组中),然后循环以提供库存中的“可用号码”。
这是我到目前为止所做的,但无效:
<?php
$array = array(0 => 2, 3 => 1, 5 => 1 );
print ('<table>');
print ('<thead><tr><th>Shoe Size</th>');
for ($i=3; $i<=12; $i += .50) {
print ('<th>'.$i.'</th>');
}
print('</tr></thead>');
print('<tbody><td>Total</td>');
foreach ($array as $shoe_size=>$number_in_inventory) {
for ($i=3; $i<=12; $i += .50) {
if ($i == $shoe_size) {
print('<td>'.$number_in_inventory.'</td>');
}
else {
print('<td>0</td>');
}
}
}
print("</tbody></table>");
我的问题是,因为我有一个foreach
循环 AND 一个for
循环,它打印出两倍数的表列(<td>
的)。
如何更好地调整此代码,使其仅循环并正确显示列一次?我很遗憾这个。
非常感谢!
答案 0 :(得分:2)
更改主循环以完成每个可能的鞋码;如果库存数组($array
)中存在大小,则打印该值,否则打印为零。
// ...
print('<tbody><td>Total</td>');
for ($i = 3; $i <= 12; $i += .50) {
if (array_key_exists("$i", $array)) {
print '<td>'.$array["$i"].'</td>';
} else {
print '<td>0</td>';
}
}
// ...
我的问题是,因为我有一个foreach循环和一个for循环,它打印出两倍的表列('s)。
这正是问题所在。与<th>
部分一样,您希望为每种可能的鞋码(3到12)打印<td>
。对于每种可能的鞋码,您需要做的就是检查清单中是否有相应的值,就像我上面的代码段一样。
答案 1 :(得分:0)
您可以尝试循环遍历所有尺寸,然后针对每种尺寸,使用array_key_exists()
检查它是否在数组中