也许这是个愚蠢的问题,但我自己解决不了。
我有以下代码:
<?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索引值,如下所示:
<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>
(...)我该怎么做?
我希望这很简单,希望你能善意地帮助我。
谢谢。
发布于 2012-01-08 19:15:19
要重新运行代码,您始终可以再次执行代码。
除此之外,您还需要将当前的全局变量初始化从函数内部移动到全局作用域,以便在重新运行代码时对其进行修改。
以下是修改后的代码,其中包含一些注释:
<?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);
?>https://stackoverflow.com/questions/8773499
复制相似问题