$files = glob("../../users/$username/posts/*");
foreach( $files as $eachfile )
{
echo basename($eachfile); //this is current basename
echo "?"; //previous basename how will be?
echo "?"; //next basename how will be?
}
我如何在同一个循环上回显循环的下一个和上一个基名,我的意思是没有 php 再次执行 foreach,如您在示例中看到的那样。
也许你可以做这样的事情:
$files = glob("../../users/$username/posts/*");
for($i = 1; $i < count($files) - 1;$i++)
{
echo basename($files[$i]); //this is current basename
echo basename($files[$i - 1]);
echo basename($files[$i + 1]);
}
先简化
为了使循环正确,可以更轻松地将三个值视为仅回顾,而不是向前看:
您可以将问题简化为"需要前两个基本名称",而不是"需要上一个和下一个基本名称"。
保存旧值
现在,您可以将前两个基本名称保存在两个变量中。
当前基名称可以在循环结束时保存为下一个循环的前一个基名称。
上一个基名称将是下一个迭代中的第二个前一个基名称。
重命名以使下一部分更容易
简化对于这部分很有用,但算法的后面部分可能更容易具有上一个和下一个基名。所以,如果有帮助,你现在可以将变量curent
、previous
和previous2
重命名为 next
、curent
和 previous
。
在伪代码中(我不知道 php(:
prev = files[0]
curr = files[1]
next = files[2]
for (i = 2...files.length) {
next = files[i]
echo prev
echo curr
echo next
prev = curr
curr = next
}