嗨,我想比较一下,如果我在目录中的文件与我保存在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>";
}
}
}
}
}
您的内部while
循环将只循环一次查询的所有结果。
如果你想再次遍历查询的所有结果,你必须在你的内部while循环之后使用mysql_data_seek($tabla1, 0);
来倒带它们。
顺便说一下,旧的mysql_*
函数在PHP中已被弃用,您应该考虑切换到PDO或mysqli_*
。
$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)){
但是您最好只是将数据库上的查询拉到数组中,然后将该数组与in_array()进行比较。这样你就可以解析出你的dir值,并对它们做任何你想做的事情。