Найти следующее и предыдущее базовое имя в том же цикле foreach

$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, как вы можете видеть в примере.

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

Другие решения

Сначала упростить

Чтобы получить правильную петлю, было бы проще увидеть три значения как только оглядывающиеся назад, а не впереди:
Вместо «нужны предыдущее и следующее базовое имя» вы можете упростить задачу как «нужны два предыдущих базовых имени».

Сохранить старые значения

Теперь вы можете сохранить два предыдущих имени в двух переменных.

Текущее базовое имя может быть сохранено в конце цикла как предыдущее для следующего цикла.
Предыдущее базовое имя будет вторым предыдущим в следующей итерации.

Переименуйте, чтобы сделать следующую часть проще

Упрощение было полезно для этой части, но более поздним частям алгоритма может быть проще иметь предыдущее и следующее базовое имя. Так что, если это поможет, теперь вы можете переименовать переменные 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
}
0

По вопросам рекламы [email protected]