在同一个foreach循环中查找下一个和上一个basename

时间:2014-09-17 18:36:00

标签: php foreach glob

$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,如示例中所示。

2 个答案:

答案 0 :(得分:0)

也许你可以这样做:

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

答案 1 :(得分:0)

首先简化

为了使循环正确,可以更容易地看到三个值仅回顾,而不是向前看:
而不是&#34;需要前一个和下一个基本名称&#34;,您可以简化问题,因为&#34;需要前两个基本名称&#34;。

保存旧值

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

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

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

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

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