在同一个 foreach 循环中查找下一个和上一个基本名称


Find next and previous basename in same foreach loop

$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]);
}

先简化

为了使循环正确,可以更轻松地将三个值视为仅回顾,而不是向前看:
您可以将问题简化为"需要前两个基本名称",而不是"需要上一个和下一个基本名称"。

保存旧值

现在,您可以将前两个基本名称保存在两个变量中。

当前基名称

可以在循环结束时保存为下一个循环的前一个基名称。
上一个基名称将是下一个迭代中的第二个前一个基名称。

重命名以使下一部分更容易

简化对于这部分很有用,但算法的后面部分可能更容易具有上一个和下一个基名。所以,如果有帮助,你现在可以将变量curentpreviousprevious2重命名为 nextcurentprevious

在伪代码中(我不知道 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
}