迭代两个whiles并比较项目

时间:2014-05-07 21:10:30

标签: php mysql

嗨我想比较一下,如果我在目录中的文件与我在db中保存的文件相同。 这是我的代码我不知道为什么它只在目录的第一项中迭代而不是全部:

$dir = opendir("galerias/programas");
    while ($elemento = readdir($dir)){
        if( $elemento != "." && $elemento != ".."){
            if( is_dir($path.$elemento) ){
                echo "<p><strong>CARPETA: ". $elemento ."</strong></p>";
            }else{
                while( $row = mysql_fetch_assoc($tabla1)){
                    if($row['imagen'] == $elemento){
                        echo $row['imagen'];
                        echo "<br>";
                    }
            }
        }
    }
}

2 个答案:

答案 0 :(得分:1)

您的内部while循环将仅在查询的所有结果上循环一次。

如果您希望再次对查询的所有结果进行迭代,则必须在内部while循环后使用mysql_data_seek($tabla1, 0);对其进行回放。

顺便说一句,旧的mysql_*函数在PHP中已弃用,您应该考虑切换到PDO或mysqli_*

答案 1 :(得分:0)

$dir = opendir("galerias/programas");
    while ($elemento = readdir($dir)){
        if( $elemento != "." && $elemento != ".."){
            if( is_dir($path.$elemento) ){
                echo "<p><strong>CARPETA: ". $elemento ."</strong></p>";
            }else{
                while( $row = mysql_fetch_assoc($tabla1)){
                    if($row['imagen'] == $elemento){
                        echo $row['imagen'];
                        echo "<br>";
                    }
            }
        }
    }
}

您可以更改:

if( $elemento != "." && $elemento != ".."){

为:

if(!is_dir($elemento)){

但是你最好只是将DB上的查询拉到一个数组,然后将数组与in_array()进行比较。这样你就可以解析你的目标值,并随心所欲地做任何事情。