也许这是一个愚蠢的问题,但我自己无法解决它。
我有以下代码:
<?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);
?>
如您所见,它会读取文件夹中的所有文件,并生成以下代码:
<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-index值,如下所示:
<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>
(...)
我该怎么做?
我希望它很简单,你可以帮助我。
感谢。
答案 0 :(得分:1)
要重新运行代码,您始终可以再次执行代码。
除此之外,您还需要将当前全局变量初始化从函数内部移动到全局作用域,以允许在代码的其他重新运行时修改它们。
以下是您修改过的代码,其中包含一些注释:
<?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);
?>