$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
}