function dirScan($dir)
{
static $files; // Вопрос № 1 -это мы объявили переменную что бы она работала за пределами функции?
//При первом вызове функции она пуста, по этому
if(empty($files))
{
//Сканируем директорию, вытаскивая в массив все названия файлов
$files = scandir($dir);
//Убираем из массива служебные записи (точка и две точки)
$files = array_diff($files, array('.', '..')); /* Вопрос №2 - Вот тут не совсем понятно что за служебные записи,
точка и две точки? и зачем их убирать? */
}
//Если массив пустой, то пишем в него номер 1 При следующем вызове функции
/**массив уже не будет пустым, так как объявлен бессмертным конструкцией static ....
..Вопрос № 3 - Почему не может - по тому что мы к $files применили тернарный оператор?*/
$files = count($files) ? $files : array('1');
//На выход
return $files;
}
Спустя 23 минуты, 55 секунд (20.08.2010 - 23:33) Lenarfate написал(а):
а че тут объяснять, все сказано уже
Спустя 31 минута, 21 секунда (21.08.2010 - 00:05) SvSerg написал(а):
А вот это можете объяснить?
//Убираем из массива служебные записи (точка и две точки)
$files = array_diff($files, array('.', '..')); /* Вопрос №2 - Вот тут не
совсем понятно
что за служебные записи, точка и две точки? и зачем их убирать? */
Спустя 40 минут, 46 секунд (21.08.2010 - 00:45) twin написал(а):
Цитата |
static $files; // Вопрос № 1 -это мы объявили переменную что бы она работала за пределами функции? |
Нет, не будет работать за пределами. Просто эта переменная не умрет, как все остальные, по окончании работы функции. А будет жить в ней до завершения скрипта.
Цитата |
$files = array_diff($files, array('.', '..')); /* Вопрос №2 - Вот тут не совсем понятно что за служебные записи, точка и две точки? и зачем их убирать? */ |
Вот тут про это.
Спустя 15 часов, 29 минут, 15 секунд (21.08.2010 - 16:15) SvSerg написал(а):
Я поражён на повал.....Сколько пользуюсь компьютером, а самого казалось бы простого не знал - как хранятся файлы, за-то уже полез в PHP
Твин тебе как всегда Спс и
Твин тебе как всегда Спс и
Спустя 4 месяца, 9 дней, 8 часов, 11 минут, 51 секунда (31.12.2010 - 01:26) MNO121280 написал(а):
Прошу прощение за наивный вопрос, но как я понял в седьмом шаге Гостевой книги с использованием текстовых файлов для хранения информации есть такой код:
Но насколько я понял в папке data, мы кроме файлов с сообщениями пользователей ничего другого хранить не собирались. Это на всякий случай, если нам придеться хранить там еще что-нибудь или для чего-то другого? Ведь если мы сканируем папку 'data', то нам всеровно, что выше нее находяться другие папки. Или я чего-то не понял?
if(empty($files))
{
//Сканируем директорию, вытаскивая в массив все названия файлов
$files = scandir($dir);
//Убираем из массива служебные записи (точка и две точки)
$files = array_diff($files, array('.', '..'));
}
Но насколько я понял в папке data, мы кроме файлов с сообщениями пользователей ничего другого хранить не собирались. Это на всякий случай, если нам придеться хранить там еще что-нибудь или для чего-то другого? Ведь если мы сканируем папку 'data', то нам всеровно, что выше нее находяться другие папки. Или я чего-то не понял?
Спустя 4 минуты, 54 секунды (31.12.2010 - 01:31) kovaldm написал(а):
Я тоже ничего не понял.))) Функцию scandir интересует только то что находится в папке $dir.
Спустя 31 минута, 31 секунда (31.12.2010 - 02:03) MNO121280 написал(а):
Цитата (kovaldm @ 30.12.2010 - 22:31) |
Я тоже ничего не понял.))) Функцию scandir интересует только то что находится в папке $dir. |
М -да?..
Спустя 7 часов, 58 минут, 24 секунды (31.12.2010 - 10:01) twin написал(а):
А зачем в ней что то еще хранить? она специально для файлов с информацией.
А что выше нам не интересно, путь указан явно.
А что выше нам не интересно, путь указан явно.
Спустя 7 часов, 51 минута, 58 секунд (31.12.2010 - 17:53) MNO121280 написал(а):
В объяснении к уроку написано: "Тут все просто - сканируем директорию функцией scandir(), исключая попутно функцией array_diff() служебные записи". А зачем тогда отделять служебные если их в папке data нет? Я вот о чем хотел спросить.
Спустя 21 час, 21 минута (1.01.2011 - 15:14) kovaldm написал(а):
MNO121280
А что здесь непонятного? Почитай про функцию scandir и функцию array_diff. Можно провести эксперимент наконец, тогда станет намного яснее для чего они нужны в данном коде.
А что здесь непонятного? Почитай про функцию scandir и функцию array_diff. Можно провести эксперимент наконец, тогда станет намного яснее для чего они нужны в данном коде.
Спустя 8 часов, 7 минут, 48 секунд (1.01.2011 - 23:22) MNO121280 написал(а):
Попробовал просмотреть содержимое $files при помощи функции print_r...
Если написать такой код:
То выдает:
Array
(
[0] => .
[1] => ..
[2] => 1
[3] => 2
[4] => 3
)
А если такой:
Array
(
[0] => 1
[1] => 2
[2] => 3
)
Я раньше думал, что точки ставят лишь в относительных ссылках на HTML-страницах. Оказывается ничего подобного! Спасибо за разъяснение.
Если написать такой код:
if(empty($files))
{
//Сканируем директорию, вытаскивая в массив все названия файлов
$files = scandir($dir);
$test = $files;
//Убираем из массива служебные записи (точка и две точки)
//$files = array_diff($files, array('.', '..'));
}
То выдает:
Array
(
[0] => .
[1] => ..
[2] => 1
[3] => 2
[4] => 3
)
А если такой:
if(empty($files))
{
//Сканируем директорию, вытаскивая в массив все названия файлов
$files = scandir($dir);
$test = $files;
//Убираем из массива служебные записи (точка и две точки)
$files = array_diff($files, array('.', '..'));
}
Array
(
[0] => 1
[1] => 2
[2] => 3
)
Я раньше думал, что точки ставят лишь в относительных ссылках на HTML-страницах. Оказывается ничего подобного! Спасибо за разъяснение.
Спустя 50 минут, 44 секунды (2.01.2011 - 00:13) twin написал(а):
Вот же...
Я писал, стрался.. меня мникто не слуууушаааееееет!
Я писал, стрался.. меня мникто не слуууушаааееееет!
Спустя 33 минуты, 6 секунд (2.01.2011 - 00:46) MNO121280 написал(а):
Цитата (twin @ 1.01.2011 - 21:13) |
Вот же... Я писал, стрался.. меня мникто не слуууушаааееееет! |
В том-то и дело что, слушают тебя. ОГРОМНОЕ ТЕБЕ СПАСИБО ЗА ТВОЙ САЙТ.
Если бы не ты, то я и дальше бы тупо перепечатывал листинги из книжек по PHP, а своего так-бы ничего и не мог написать. Просто когда принимаешь все на веру, то магия получается сплошная. А потом она выходит таким боком... Чужие знания становяться твоими только тогда, когда ты проверил их на практике. Это я у тебя научился. Просто я хочу все понимать, а не копипастить. А если что уж не так простите дурака, исправлюсь.