页面上的数组打印,同时切断

时间:2013-11-21 23:59:52

标签: php arrays

我有这个循环遍历数组并将其打印出来。问题是,假设这个数组中有8个元素。如果第5阵列不同意这个 $ scheduleFirstLine [10] [$ sfl] == 1 ,那么就会中断。它没有继续第6和第7项。我该如何解决这个问题?

while ($scheduleFirstLine[10][$sfl] == 1)
        {
            echo '
            <tr>
                <td style="color:'.$scheduleFirstLine[8][$sfl].';background-color:'.$scheduleFirstLine[9][$sfl].';">
                    '.$scheduleFirstLine[1][$sfl].'<br />'.$scheduleSecondLine[1][$sfl].'</td>
                <td style="color:'.$scheduleFirstLine[8][$sfl].';background-color:'.$scheduleFirstLine[9][$sfl].';">
                    '.$scheduleFirstLine[2][$sfl].'<br />'.$scheduleSecondLine[2][$sfl].' </td>
                <td style="color:'.$scheduleFirstLine[8][$sfl].';background-color:'.$scheduleFirstLine[9][$sfl].';">
                    '.$scheduleFirstLine[3][$sfl].'<br />'.$scheduleSecondLine[3][$sfl].' </td>
                <td style="color:'.$scheduleFirstLine[8][$sfl].';background-color:'.$scheduleFirstLine[9][$sfl].';">
                    '.$scheduleFirstLine[4][$sfl].'<br />'.$scheduleSecondLine[4][$sfl].' </td>
                <td style="color:'.$scheduleFirstLine[8][$sfl].';background-color:'.$scheduleFirstLine[9][$sfl].';">
                    '.$scheduleFirstLine[5][$sfl].'<br />'.$scheduleSecondLine[5][$sfl].' </td>
                <td style="color:'.$scheduleFirstLine[8][$sfl].';background-color:'.$scheduleFirstLine[9][$sfl].';">
                    '.$scheduleFirstLine[6][$sfl].'<br />'.$scheduleSecondLine[6][$sfl].' </td>
                <td style="color:'.$scheduleFirstLine[8][$sfl].';background-color:'.$scheduleFirstLine[9][$sfl].';">
                    '.$scheduleFirstLine[7][$sfl].'<br />'.$scheduleSecondLine[7][$sfl].' </td>            
            </tr>
            ';
            $sfl++;
        }

1 个答案:

答案 0 :(得分:3)

更改你的while条件并在循环内使用if。

$max = count($scheduleFirstLine[10]);
$sfl = 0;
while ($sfl < $max) {
    if ($scheduleFirstLine[10][$sfl] != 1)
        continue; // ignore these values
    // rest of the code
}

我还建议更改数组的结构。你的看起来像这样:

Array(
    Array( // attribute 1
        attribute 1 of 1st element,
        attribute 1 of 2nd element,
    )
    Array( // attribute 2
        attribute 2 of 1st element,
        attribute 2 of 2nd element,
    )
    ...
)

不是将元素分布在所有值上,而是将属于一个元素的所有属性存储在一起,如下所示:

Array(
    Array( // 1st element
        attribute 1,
        attribute 2,
    )
    Array( // 2nd element
        attribute 1,
        attribute 2,
    )
    ...
)

然后您可以使用以下代码:

foreach ($array as $element) {
    if ($element[10] != 1)
        continue;

    echo '...'.$element[8].'...'.$element[1].'..';//etc.
}

将来更好地理解和修改,因为正如我所说,属性现在属于一个元素(并且一起存储!)