首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重复PHP readdir代码

重复PHP readdir代码
EN

Stack Overflow用户
提问于 2012-01-08 06:06:31
回答 1查看 347关注 0票数 0

也许这是个愚蠢的问题,但我自己解决不了。

我有以下代码:

代码语言:javascript
复制
<?php
    $path = "galeria01";
    $dir_handle = @opendir($path) or die("Not found: $path");
    list_dir($dir_handle,$path);

    function list_dir($dir_handle,$path)
    {
        global $div;
        $div = 001;
        global $zindex;
        $zindex = 200;
        global $margem;
        $margem = 114;
        while ((($file = readdir($dir_handle)) !== false)) {
            if ($file != "." && $file != ".." ) {
                echo PHP_EOL . '<div id="';
                echo str_pad($div, 3, 0, STR_PAD_LEFT);
                echo '" style="position:absolute;left:';
                echo $margem;
                echo 'px;z-index:';
                echo $zindex;
                echo '"><img src="galeria01/';
                echo $file;
                echo '" width="675" height="450" /></div>';
                echo'<span class="clear"></span>';
                $div++;
                $zindex--;
                $margem = $margem - 675;
            }
        }
    }
    closedir($dir_handle);
?>

如您所见,它读取文件夹中的所有文件,并生成以下代码:

代码语言:javascript
复制
<div id="001" style="position:absolute;left:114px;z-index:200"><img src="001.jpg" width="675" height="450" /></div><span class="clear"></span>
<div id="002" style="position:absolute;left:-561px;z-index:199"><img src="002.jpg" width="675" height="450" /></div><span class="clear"></span>
<div id="003" style="position:absolute;left:-1236px;z-index:198"><img src="003.jpg" width="675" height="450" /></div><span class="clear"></span>
<div id="004" style="position:absolute;left:-1911px;z-index:197"><img src="004.jpg" width="675" height="450" /></div><span class="clear"></span></div>

我只需要重新运行代码几次,并以相同的顺序生成所有那些动态生成的div,但总是减少左边距和z索引值,如下所示:

代码语言:javascript
复制
    <div id="001" style="position:absolute;left:114px;z-index:200"><img src="001.jpg" width="675" height="450" /></div><span class="clear"></span>
                     (...)
    <div id="004" style="position:absolute;left:-1911px;z-index:197"><img src="004.jpg" width="675" height="450" /></div><span class="clear"></span></div>
    <div id="001" style="position:absolute;left:-2586px;z-index:196"><img src="001.jpg" width="675" height="450" /></div><span class="clear"></span>
                     (...)

我该怎么做?

我希望这很简单,希望你能善意地帮助我。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-08 19:15:19

要重新运行代码,您始终可以再次执行代码。

除此之外,您还需要将当前的全局变量初始化从函数内部移动到全局作用域,以便在重新运行代码时对其进行修改。

以下是修改后的代码,其中包含一些注释:

代码语言:javascript
复制
<?php
$path = ".";
$dir_handle = @opendir($path) or die("Not found: $path");

// do the init of these variables outside of the function and before the first call
global $zindex;
$zindex = 200;
global $margem;
$margem = 114;

// now call your function, it will behave like your original code
list_dir($dir_handle,$path);

// now call the your function again, it will pick up with the zindex/margem values of the last div you printed
list_dir($dir_handle,$path);

function list_dir($dir_handle,$path)
{
    global $div;
    $div = 001;
    global $zindex;
    // no longer set a new value for the zindex with each function call
    //$zindex = 200;
    global $margem;
    // no longer set a new value for the margem with each function call
    //$margem = 114;
    //reset the directory handle to the first position
    rewinddir($dir_handle);
    while ((($file = readdir($dir_handle)) !== false)) {
        if ($file != "." && $file != ".." ) {
            echo PHP_EOL . '<div id="';
            echo str_pad($div, 3, 0, STR_PAD_LEFT);
            echo '" style="position:absolute;left:';
            echo $margem;
            echo 'px;z-index:';
            echo $zindex;
            echo '"><img src="galeria01/';
            echo $file;
            echo '" width="675" height="450" /></div>';
            echo'<span class="clear"></span>';
            $div++;
            $zindex--;
            $margem = $margem - 675;
        }
    }
}
closedir($dir_handle);
?>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8773499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档