Удаление виртуальных директорий ячеек массива с точками
При сканировании папки разными способами, и если это массив с названиями, то первые две ячейки массива будут состоять из точек - они называются виртуальные директории! Естественно, что они будут мешаться в случае использования данного массива на сайте! Поэтому мы должны удалить эти точки в массиве!
Все способы удалить две виртуальные директории
- Что такое виртуальные директории в массиве после scandir
- Удаление виртуальных директорий ->
unset - Удаление виртуальных директорий ->
array_diff - Удаление виртуальных директорий ->
цикл for - Еще способ удаления виртуальных директорий ->
array_filter - Скачать
Что такое виртуальные директории в массиве после scandir
Если вы используете scandir для получения файлов в папке, или любым другим способом, то в первых двух ячейках вашего массива получим две виртуальные директории:
.
..
Elitsin-alkash.html
Gorbachev-goret-tebe-v-adu.dat
Gorbachev-predatel.html
Gorbachev-prodal-rodinu.txt
Gorbachev-razvalil-SSSR.php
amerikosyi_kazlyi.txt
no_title.html
obama_pidurok.html
strange_names_file.html
Если вы работаете с папкой и массивом, то наверняка понимаете. что они вам будут постоянно мешаться! Поэтому давайте удалим эти виртуальные директории!
Удаление виртуальных директорий -> unset
Самое простий способ избавиться от виртуальных директорий - это просто удалить две первые ячейки массива
У нас есть наш массив файлов, который был получен таким образом:
Получаем путь на сервере, всегда делаю в самом верху страницы и присваиваю это значение переменной:
Заносим в переменную путь до папки, которую будем сканировать:
Сканируем помощью scandir
Выводим с помощью print_r:
.
..
Elitsin-alkash.html
Gorbachev-goret-tebe-v-adu.dat
Gorbachev-predatel.html
Gorbachev-prodal-rodinu.txt
Gorbachev-razvalil-SSSR.php
amerikosyi_kazlyi.txt
no_title.html
obama_pidurok.html
strange_names_file.html
Как видим наши виртуальные директории замечательно расположились в ячейки [0] и [1], применим к ним unset:
unset($file [0]);
unset($file [1]);
Результат удаления виртуальных папко с помощью unset
Array
(
[2] => Elitsin-alkash.html
[3] => Gorbachev-goret-tebe-v-adu.dat
[4] => Gorbachev-predatel.html
[5] => Gorbachev-prodal-rodinu.txt
[6] => Gorbachev-razvalil-SSSR.php
[7] => amerikosyi_kazlyi.txt
[8] => no_title.html
[9] => obama_pidurok.html
[10] => strange_names_file.html
)
Удаление виртуальных директорий -> array_diff
Следующий способ удалить виртуальные директории использовать Как помним из предыдущего пункта, что в $file мы уже не сможем удалить виртуальные директории, поэтому нам нужно присвоить данный массив новой переменной, чтобы было все по честному:
Создадим из этих двух виртуальных директорий массив
Выводим здесь:
Array
(
[2] => Elitsin-alkash.html
[3] => Gorbachev-goret-tebe-v-adu.dat
[4] => Gorbachev-predatel.html
[5] => Gorbachev-prodal-rodinu.txt
[6] => Gorbachev-razvalil-SSSR.php
[7] => amerikosyi_kazlyi.txt
[8] => no_title.html
[9] => obama_pidurok.html
[10] => strange_names_file.html
)
Удаление виртуальных директорий -> цикл for
Как удалить виртуальные директории с помощью цикла!?
Открываем папку - opendir.
Читаем папку – readdir.
Если папки не равны точкам, то выводим название… через echo:
<?php
$handle = opendir('путь_до _папки');
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
echo "$file\n<br>";
}
}
?>Результат:
strange_names_file.html
Gorbachev-prodal-rodinu.txt
Gorbachev-predatel.html
Gorbachev-razvalil-SSSR.php
amerikosyi_kazlyi.txt
obama_pidurok.html
Gorbachev-goret-tebe-v-adu.dat
no_title.html
<?php
$new_array = array();
$handle = opendir('путь_до _папки');
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
$new_array[] = $file;
}
}
?>Результат:
Array
(
[0] => Elitsin-alkash.html
[1] => strange_names_file.html
[2] => Gorbachev-prodal-rodinu.txt
[3] => Gorbachev-predatel.html
[4] => Gorbachev-razvalil-SSSR.php
[5] => amerikosyi_kazlyi.txt
[6] => obama_pidurok.html
[7] => Gorbachev-goret-tebe-v-adu.dat
[8] => no_title.html
)
Еще способ удаления виртуальных директорий -> array_filter
Следующий вариант удаления виртуальных директорий в виде точек используем array_filter + для восстановления нумерации -> array_values, выше я уже давал ссылку$arr = $file;// стоит в самом верху. Для того, чтобы мы с каждым массивом могли работать отдельно! - вам этого делать не нужно...
$arr = array_values(array_filter($arr, function($e) { return $e != "."; }));// вывод массива без первой точки
$arr = array_values(array_filter($arr, function($e) { return $e != ".."; }));// вывод массива без второй точки
print_r($arr );
Результат удаления виртуальных директорий с помощью array_filter
Array
(
[0] => Elitsin-alkash.html
[1] => Gorbachev-goret-tebe-v-adu.dat
[2] => Gorbachev-predatel.html
[3] => Gorbachev-prodal-rodinu.txt
[4] => Gorbachev-razvalil-SSSR.php
[5] => amerikosyi_kazlyi.txt
[6] => no_title.html
[7] => obama_pidurok.html
[8] => strange_names_file.html
)
Вот и всё, что я сегодня хотел вам рассказать!
Свои комменты в ожидании переделки!
Когда сделаю не знаю!
Времени нет...
Иначе сообщение будет удалено, вас в бан - все просто!
Но если, сил нет как хочется высказать всё, что вы думаете об этом, пожалуйста - комменты от Vk - форма ниже: