在PHP中的For循环中使用多维数组

时间:2011-03-17 19:53:01

标签: php loops for-loop

我有以下多维数组:

<? $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>的)。

如何更好地调整此代码,使其仅循环并正确显示列一次?我很遗憾这个。

非常感谢!

2 个答案:

答案 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()检查它是否在数组中