Вы можете использовать взрываются, чтобы получить детали из вашего массива:
$path = trim($array['path'], "/"); // trim the path of slashes
$path = explode("/", $path);
unset($path[0]); // the first one is the file, the others are sections of the url
Если вы действительно хотите, чтобы сделать его zerobased снова, добавьте в последнюю строку:
$patch = array_values($path);
В ответ на ваше изменение:
Вы хотите сделать это как можно более гибким, поэтому нет фиксированного кодирования, рассчитанного на максимум 5 предметов. Хотя вы, вероятно, никогда не превзойдете этого, просто не привязывайтесь к нему, просто накладные расходы вам не нужны.
Если у вас есть система страницы, как это:
id parent name url
1 -1 Foo foo
2 1 Bar, child of Foo bar-child-of-foo
сделать рекурсивную функцию. Передайте массив в функцию, которая принимает первый раздел, чтобы найти элемент корневой
SELECT * FROM pages WHERE parent=-1 AND url=$path[0]
Этот запрос возвращает идентификатор, используйте, что в родительской колонке со следующим значением массива. Отсоедините каждое найденное значение массива $ path. В конце концов, у вас будет массив с оставшимися частями.
Чтобы создать эскиз пример:
function GetFullPath(&$path, $parent=-1){
$path = "/"; // start with a slash
// Make the query for childs of this item
$result = mysqli_query($conn, "SELECT * FROM pages WHERE parent=".$parent." AND url=".current($path)." LIMIT 1");
// If any rows exists, append more of the url via recursiveness:
if($result->num_rows!==0){
// Remove the first part so if we go one deeper we start with the next value
$path = array_slice($patch,1); // remove first value
$fetch = $result->fetch_assoc();
// Use the fetched value to go deeper, find a child with the current item as parent
$path.= GetFullPath($path, $fetch['parent']);
}
// Return the result. if nothing is found at all, the result will be "/", probs home
return $path;
}
echo GetFullPath($path); // I pass it by reference, any alterations in the function happen to the variable outside the scope aswell
Это проект, я не проверял это, но вы получите идею им пытаются эскиз. Вы можете использовать тот же метод, чтобы получить идентификатор страницы, на которой вы находитесь. Просто продолжайте снова передавать переменную c
На днях я получаю рекурсивность ^^.
Редактировать снова: Ой, что оказалось совсем некоторым кодом.
Drop Apache и использовать аналогичную функцию, предоставляемую другими веб-серверами? –
Если у вас нет доступа к htaccess или mod rewrite, вы должны рассмотреть возможность переключения хостов. Если это не причина этого вопроса, не могли бы вы объяснить, почему вы хотите это сделать? –
Я отредактировал свой ответ в ответ на ваш вопрос – Martijn