[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вопрос по Гостевой книге - Шаг 7 "Архивирование ф"
SvSerg
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 написал(а):
blink.gif Я поражён на повал.....Сколько пользуюсь компьютером, а самого казалось бы простого не знал - как хранятся файлы, за-то уже полез в PHP biggrin.gif
Твин тебе как всегда Спс и user posted image

Спустя 4 месяца, 9 дней, 8 часов, 11 минут, 51 секунда (31.12.2010 - 01:26) MNO121280 написал(а):
Прошу прощение за наивный вопрос, но как я понял в седьмом шаге Гостевой книги с использованием текстовых файлов для хранения информации есть такой код:


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 нет? Я вот о чем хотел спросить. unsure.gif

Спустя 21 час, 21 минута (1.01.2011 - 15:14) kovaldm написал(а):
MNO121280
А что здесь непонятного? Почитай про функцию scandir и функцию array_diff. Можно провести эксперимент наконец, тогда станет намного яснее для чего они нужны в данном коде.

Спустя 8 часов, 7 минут, 48 секунд (1.01.2011 - 23:22) MNO121280 написал(а):
Попробовал просмотреть содержимое $files при помощи функции print_r...
Если написать такой код:


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 написал(а):
Вот же...
Я писал, стрался.. меня мникто не слуууушаааееееет! user posted image

Спустя 33 минуты, 6 секунд (2.01.2011 - 00:46) MNO121280 написал(а):
Цитата (twin @ 1.01.2011 - 21:13)
Вот же...
Я писал, стрался.. меня мникто не слуууушаааееееет! user posted image

В том-то и дело что, слушают тебя. ОГРОМНОЕ ТЕБЕ СПАСИБО ЗА ТВОЙ САЙТ.
Если бы не ты, то я и дальше бы тупо перепечатывал листинги из книжек по PHP, а своего так-бы ничего и не мог написать. Просто когда принимаешь все на веру, то магия получается сплошная. А потом она выходит таким боком... Чужие знания становяться твоими только тогда, когда ты проверил их на практике. Это я у тебя научился. Просто я хочу все понимать, а не копипастить. А если что уж не так простите дурака, исправлюсь.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.