Запомните следующую и предыдущую страницы, используя стек

Если у вас есть массив имен страниц, таких как показано ниже:

    $array = ["home.php", "about.php", "contact.php"];

Пользователь попадет на «home.php» и будет иметь кнопку для перехода на следующую страницу, которая будет «about.php». Страница about будет иметь предыдущую кнопку с именем home.php и следующую кнопку с именем contact.php.

Я пытаюсь использовать для этого стек, выдвигая и выталкивая значения, но мне не везет. Я ценю, если кто-то предлагает альтернативы этому, но я хочу использовать стек.

1

Решение

Вы можете использовать array_search, чтобы найти местоположение текущей страницы внутри массива. Затем проверьте, есть ли у него соседи, например:

$array = ["home.php", "about.php", "contact.php"];

// Get the location of the current page in $array
$currentPageKey = array_search(basename($_SERVER['SCRIPT_NAME']), $array);

// See if there is a key prior to this. If so, get it's value
$previousPage = array_key_exists($currentPageKey - 1, $array)
? $array[$currentPageKey - 1]
: null;

// See if there is a key after this. If so, get it's value
$nextPage = array_key_exists($currentPageKey + 1, $array)
? $array[$currentPageKey + 1]
: null;

Тогда вы можете сделать что-то вроде

if (!is_null($previousPage)) {
echo '<a href="' . $previousPage . '">Previous</a>';
}

if (!is_null($nextPage)) {
echo '<a href="' . $nextPage . '">Next</a>';
}
0

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

Просто проверьте индекс массива текущей страницы и соответственно создайте предыдущие / следующие ссылки:

    $array = ["home.php", "about.php", "contact.php"];
$cp = basename($_SERVER['PHP_SELF']);
$ci = array_search($cp, $array);
if($ci > 0){
echo '<a href="'.$array[$ci-1].'">Prev page</a>';
}
if($ci < count($array)-1){
echo '<a href="'.$array[$ci+1].'">Next page</a>';
}
0

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