循环不正常

时间:2010-11-03 12:18:38

标签: php loops

我无法使此循环正常运行。每当($records[$row][2] == $prevRow2)我需要它来重新创建class =字段并且只关闭div = row时所在的组($records[$row][2] == $prevRow2)。请帮忙!!

    if (($handle = fopen('upload/ATLANTA.csv', "r")) !== FALSE) {
        $prevRow2 = false;
                $row=0;
        while (($data = fgetcsv($handle, 1000, ","))) {
            $num = count($data);
            $records[] = $data;
            echo "<div id=\"row\"><div id=\"num\">" .$row. "</div>";
            echo 'Is '. $prevRow2 . 'the same as ' .$records[$row][2];

            if ($records[$row][2] == $prevRow2) {
                for ($c=0; $c < $num; $c++) {
                if ($c != 1) {
                    echo "<div class=\"field\">" . $data[$c] . "</div>";
                    }   
                }

                $prevRow2 = $records[$row][2];
                $row++;
                echo "<div id=\"filler\"></div>";

            }//if close

            else {
                for ($c=0; $c < $num; $c++) {
                    if ($c != 1) {  
                    echo "<div class=\"field\">" . $data[$c] . "</div>";
                    }   
                }
                $prevRow2 = $records[$row][2];
                $row++;
            }//close else           
        echo '</div>';
        }//close while

fclose($handle);

}

3 个答案:

答案 0 :(得分:0)

$ row似乎为null,直到您创建行$ ++ ++;

答案 1 :(得分:0)

您的数据的某些输出和/或进一步描述确实会有所帮助,但我注意到了一些事情。

1 - 除了这个填充div之外,你关闭if和else做同样的事情。我觉得这不是你想要的,但我真的不明白,不知道该怎么做。

            for ($c=0; $c < $num; $c++) {
            if ($c != 1) {
                echo "<div class=\"field\">" . $data[$c] . "</div>";
                }   
            }
            $prevRow2 = $records[$row][2];
            $row++;

此代码对于if和else块都是通用的,因此无论如何都会执行。那是你要的吗?如果是这样,你也可以将它从if移出,只将填充div移动到if中,否则没有。

2 - $ record和$ records [$ row]的目的是什么。据我所知,每当使用时,$ record [$ row] === $ data。

3 - id = row的div在每个while循环结束时关闭。你似乎建议你不要这样,如果你只在$ records [$ row] [2] AKA $ data [2]匹配前一次迭代时才这样做,我认为你的HTML不会很好。

4 - 尝试使用foreach而不是你的foor循环

答案 2 :(得分:0)

看起来公司实际上是指数3,而不是2.

    $prevData3 = false;
    $row=0;
    while (($data = fgetcsv($handle, 1000, ","))) {
        if ($data[2] != $prevData2)
        {
            if ($prevData2) echo '</div>';
            echo "<div id=\"row\"><div id=\"num\">" .$row. "</div>";
            row++;
         }
             else echo "<div id=\"filler\"></div>";
        foreach ($data as $d) {
            if ($c != 1) {
                echo "<div class=\"field\">" . $d . "</div>";
            }
        }
             echo "<br />";
        $prevData2 = $data[2];
    }
     

echo CLOSE_DIV;