|
 18.5 Кб |
|
| Здравствуйте уважаемые Максим, Игорь и Сергей.
Изучаю вашу книгу "PHP 5 на примерах" и на странице 131 в первом задании к Главе 4 столкнулся с трудностью. В этом задании вы предлагаете извлечь из результирующей строки
имена всех файлов и каталогов и разместить их в массивах соответствующих.
Все бы ничего, но в этой главе, равно как и в предыдущих, не были описаны функции по работе с каталогами и файлами. О них рассказывается в следующих главах книги.
Поскольку результат работы указанной выше строки у меня (см. скриншот) отличается кардинально от представленного в книге на стр. 95, то я был в замешательстве. Ибо вытащить из этой строки имена файлов и каталогов, не зная (умозрительно) функций или регулярных выражений, на мой взгляд очень сложно. Вероятно, потому что я расцениваю эту книгу как своеобразный учебник с заданиями по пройденным главам. Возможно, ошибаюсь.
Тем не менее, я воспользовался функцией glob() и выполнил задание (код ниже).
Однако у меня остались вопросы, на которые я прошу вас при желании ответить (или других опытных пользователей):
1. Как все-таки можно вытащить из этой строки имена файлов и каталогов, используя только те сведения, которые читатель подчерпнул из первых 4 глав книги?
2. Необязательный флаг функции glob() GLOB_NOSORT запрещает сортировку результата по алфавиту. Однако в моем случае этот флаг вообще никакого действия не возымел, так как имеющиеся каталоги выводятся по алфавиту. Почему?
Спасибо.
Вот мой код:
<?php
//Получаем список файлов и каталогов корня
$arrFD = glob("C:/*", GLOB_NOSORT);
//Выводим список имен каталогов
foreach($arrFD as $fd)
{
if(is_dir($fd))
{
$fd = substr($fd,3);
echo $fd."<br>";
}
}
echo "<br><br>";
//Выводим список имен файлов
foreach($arrFD as $fd)
{
if(is_file($fd))
{
$fd = substr($fd,3);
echo $fd."<br>";
}
}
?>
|
| |
|
|
|
|
|
|
|
для: baston
(08.02.2010 в 23:30)
| | Дело в том, что обраные кавычки позволяют выполнить команду операционной системы. Т.е. при помощи следующего скрипта вы получаете строку $str с результатом выполнения команды dir
Из которой уже можно извлекать данные при помощи строковых функций.
PS Разумеется это лишь учебное задание, который подразумевает, что вы не будете пользоваться файловыми функциями. В реальной практике, конечно лучше использовать файловые функции. | |
|
|
|
|
|
|
|
для: cheops
(09.02.2010 в 11:26)
| | Игорь Вячеславович, спасибо за ответ. Буду думать, как определить только нужные данные из строки...
И еще: нет ли ответов к этой книге? Хотелось бы сверяться.
Например, на стр.132 есть задание №2. Я его решил (потратил целый день, чтобы сначала разобраться с факториалом, потом как его вычислить, потом как запихнуть в массив его значения и т.д.). Помучался конечно, ведь я только учусь с нуля программировать. Уверен, что не зря!
Вот получившийся код. Прошу сказать, верно ли решение (впрочем, могут быть и другие варианты решений):
<?php
//Определяем функцию расчета факториала числа
function factorial($fact)
{
return ($fact <= 1)? 1 : $fact * factorial($fact-1);
}
// Заполняем массив, значения которого равны факториалу индексов массива
$num = 10;
$mas = array();
for($i = 1; $i <= $num; $i++)
{
$mas[] = factorial($i);
}
//Преобразуем каждый элемент массива в строку из 20 символов
//и выравниванием по левому краю
for($i = 0; $i < count($mas); $i++)
{
echo "<pre>";
printf("%-20s<br>", $mas[$i]);
echo "</pre>";
}
?>
|
Спасибо. | |
|
|
|
|
|
|
|
для: baston
(09.02.2010 в 16:11)
| | Централизованно в одном месте ответов на вопросы из книги нет - они разбросаны по форуму (можно попытаться их поискать). Однако, мы создали раздел "Задачи PHP", ответы на которые существуют и разбораны в этом разделе форума. Возможно вас этот раздел заинтересует. | |
|
|
|