Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
21 ошибка прогр... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Имитационное мо... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Реклама
Сейчас на сайте
Гостей: 10
На сайте нет зарегистрированных пользователей

Пользователей: 13,372
новичок: vausoz
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Моделирование процесса обеспечивающего надежность функционирования АСУ Т...
База данных студентов на Turbo Pascal (Списки) + Пояснительная записка
Расчет мер близости на отношениях на Delphi + Пояснительная записка

Программируем на PHP

Цифры желаемого времени можно проставить любые, в
зависимости от личного понятия дня и ночи :-). Следующий шаг — вывод
числа, дня недели и имени месяца. Но прежде чем мы приступим к
реализации алгоритма, нам нужно познакомиться еще с одним важным
моментом в языках программирования.



Массивы в РНР

Если Вы четко представляете себе, что такое массив, предлагаю
Вам сразу перейти к чтению следующего абзаца. Если нет, тогда именно
это Вы сейчас и узнаете. Массив — это ряд переменных, упорядоченных
по имени и имеющих различный индекс. Для примера представьте, что у
Вас есть двадцать названий, и все их нужно внести в программу. Можно
для удобства обозвать переменные одинаковым именем и ставить в конце
каждого имени переменной число в соответствии с номером названия. У
Вас получится простейший одномерный массив. Только любой язык
программирования (и РНР тоже!) предоставляет набор средств для более
детальной и удобной работы с таким набором-массивом. И число (так
называемый индекс) нужно заключать в квадратные скобки. Допустим,
есть ряд строковых переменных: компьютер, Интернет, модем, монитор.
Имя для массива выберем $m, хотя доступно любое, как и у обычной
переменной. Индекс в массивах начинается не с единицы, а с нуля, и
таким образом для внесения наших слов в массив надо сделать так:




$m[0] = "компьютер";
$m[1] = "Интернет";
$m[2] = "модем";
$m[3] = "монитор";



Теперь у нас создан массив с именем $m и
максимальным индексом (это количество элементов в массиве) — 4.
Именно 4, хотя последний заполненный элемент — 3. Если мы попробуем
считать элемент с 4-ым индексом, результат будет равен пустой
строке, так как там просто ничего нет. Обращаться к элементам
массива нужно по имени массива и его индексу, что и составляет
основное удобство. Например, мы можем вывести на экран все элементы
массива:




$i = 0; while ($i < count($m)) { echo $m[$i]."<br>"; $i++; }



Функция count($m) выдает нам число,
соответствующее максимальному индексу массива. Таким образом, у нас
всегда есть возможность знать, сколько элементов присутствует в
данном массиве. Что еще можно узнать о массивах в РНР? Кое-что
можно… Например, функция current возвращает текущий элемент массива.
Каждая переменная-массив имеет внутренний указатель (это не индекс,
а специальный параметр, который, как правило, либо совпадает с
индексом, либо превышает его на единицу, но необязательно), который
указывает на один из своих элементов. Кроме того, все элементы в
массиве связываются двунаправленным списком указателей для
дополнительных целей. Внутренний указатель указывает на первый
элемент, который включался в массив, пока Вы не выполняли одну из
функций, которые модифицируют этот указатель в этом массиве. Функция
current() просто возвращает элемент массива, на который в данный
момент указывает внутренний указатель. Она никак не перемещает
указатель. Если внутренний указатель указывает на конец списка
элементов, current() возвращает false (ложно). Внимание: если массив
содержит пустые элементы (0 или "", пустую строку), то функция
возвратит "false" для каждого из них. Это показывает, что текущий
элемент является нулевым значением или вы дошли до конца массива.
End — устанавливаете внутренний указатель массива на последнем
элементе. Next — передвигает внутренний указатель массива.
Возвращает следующий элемент массива, от текущей позиции внутреннего
указателя массива, или "ложь"(false), если нет больше элементов.
Если массив содержит пустые элементы, тогда эта функция возвратит
"ложь" (false) и для этих элементов. next() ведет себя подобно
current(), с одной лишь разницей: он передвигает внутренний
указатель массива на один элемент вперед прежде, чем возвратить
элемент. Это означает, что он возвращает значение следующего
элемента и передвигает на него внутренний указатель массива. Если
при обращении к следующему элементу обнаружен конец массива — next()
возвращает "ложь" (false). Prev — перемещает внутренний указатель
массива. Возвращает предыдущий элемент массива, или "ложь" (false),
если перед текущим нет больше элементов. Если массив содержит пустые
элементы, то функция возвратит "ложь" и на этих элементах. prev()
ведет себя подобно next(), за исключением того, что он переводит
внутренний указатель массива на одну позицию назад, а не вперед.
Reset () — устанавливает внутренний указатель массива на первом
элементе. Rsort () — сортирует массив в обратном порядке (по
убыванию), по алфавиту в том числе. К сожалению, русский алфавит тут
не при чем. Sort () — сортирует массив. Точно то же, что и
предыдущее, только по возрастанию. Конечно, это далеко не все
функции, которые есть в РНР относительно массивов. Но остальное
часто очень специфично и решается иногда более простыми методами.



Дата по-русски

Скрипт, который мы сейчас рассмотрим, позволяет вывести на экран
посетителя дату в формате русского языка. Сразу предупреждаю, что
реализация алгоритма этой задачи не самая лучшая, но
работоспособная, ясная во всех отношениях и простая. А главное —
используется только то, что уже было описано. Сначала я приведу сам
текст скрипта, а потом подробно опишу его.




<?php
//-- определяем массив для месяцев --
$q[]="";
$q[]="января";
$q[]="февраля";
$q[]="марта";
$q[]="апреля";
$q[]="мая";
$q[]="июня";
$q[]="июля";
$q[]="августа";
$q[]="сентября";
$q[]="октября";
$q[]="ноября";
$q[]="декабря";

//-- определяем массив для дней недели --
$e[0]="воскресенье";
$e[1]="понедельник";
$e[2]="вторник";
$e[3]="среда";
$e[4]="четверг";
$e[5]="пятница";
$e[6]="суббота";

// ---- считываем месяц
$m=date('m');
if ($m=="01") $m=1;
if ($m=="02") $m=2;
if ($m=="03") $m=3;
if ($m=="04") $m=4;
if ($m=="05") $m=5;
if ($m=="06") $m=6;
if ($m=="07") $m=7;
if ($m=="08") $m=8;
if ($m=="09") $m=9;

// ---- считываем день недели
$we=date('w');

// ---- считываем число
$chislo=date('d');

// — извлекаем день недели
$den_nedeli = $e[$we];

// — извлекаем значение месяца
$mesyac = $q[$m];

echo "Сегодня ".$chislo." ".$mesyac.", ".$den_nedeli;
?>



Теперь рассмотрим, как работает этот скрипт.
Сначала нам нужно определить два массива, в которых будут храниться
соответственно русское название месяца и русское название дня
недели. Так как месяц не может быть нулевым, нам нужно позаботиться
о вводе элемента массива с нулевым индексом. Если индекс массива не
указан, он принимается равным внутреннему указателю. Если массив
пуст и еще не определен, внутренний указатель указывает на первый
элемент (имеющий индекс ноль). Ввод нового элемента массива
перемещает внутренний указатель на единицу вверх, и, таким образом,
обеспечивается последующий ввод значения массива в ячейку массива,
имеющую индекс на единицу больший, чем предыдущий. В принципе, можно
обеспечить ввод данных в массив разными способами. Но указанный
здесь — самый простой и примитивный. Мы просто присваиваем
поочередно нужные нам данные элементам массива и, таким образом,
заполняем его. Точно такая же история наблюдается и со вторым
массивом. Только тут уже индекс нужных ячеек массива указывается
явно, и внутренний указатель устанавливается на тот индекс, который
указан, а после ввода значения перемещается вверх на единицу.
Разница между этими двумя методами в том, что если массив уже был
определен ранее и индекс при вводе не указан, заполнится ячейка
массива, на которую указывает внутренний указатель. А он ведь может
находиться и в конце! А если индекс указан явно, внутренний
указатель устанавливается на его значение и запись происходит в явно
указанную ячейку. Собственно, чаще массивы бывают гораздо длиннее
приведенных в примере, и удобнее воспользоваться специальной
функцией, которая позволяет считать указанный в ней файл и ввести
все, что есть в этом файле, в массив. Причем разделителем считается
перевод строки, что очень удобно. Синтаксис этой функции — $имя
массива = file ("имя файла");. Дальше формируется массив с указанным
именем и значениями, соответствующими строкам файла. 

Когда массивы определены, нам нужно считать номер месяца. Он
считывается с ведущим нулем, если номер месяца менее десяти, и
поэтому нам нужно позаботиться об его отсечении. Тут можно применить
тоже разные алгоритмы и методы, но мы воспользуемся лобовым решением
— просто сравним полученное решение с рядом заранее известных
вариантов и изменим номер месяца на правильный без нуля. Решение
грубое, зато понятное и уже знакомое нам. Хотя так делать не
правильно — есть более изящные методы, например, проверить
полученное значение на ведущий ноль, и если проверка есть истина
(самый первый символ в строке — ноль), удалить первый символ.

Далее по ходу скрипта мы считываем день недели и число. С числом
делать ничего не нужно, так как дата будет понятна всем, а вот день
недели и месяц должны подвергнуться обработке. Извлекаем из
введенного нами ранее массива день недели. Номер дня недели
указывает на ячейку нашего массива, где хранится нужное русское имя,
и таким образом мы в любом случае получим правильное значение.
Меняется номер дня недели, меняется номер (индекс) ячейки, из
которой считывается значение. Причем тут, в отличие от массива с
именем месяца, нулю соответствует воскресенье, что мы и учли при
вводе массива дней недели. Точно такую же операцию проводим и для
месяца. Его номер указывает на ячейку массива, где хранится
правильное имя месяца на русском языке. А дальше — выводим результат
на экран в произвольной форме. 



Заключение

Итак, мы познакомились с очень важными в любом языке
программирования принципами организации циклов и массивов, а также
узнали, как применять на практике возможность отправки почты и
считывание даты. Не сомневаюсь, что вы сможете придумать еще много
примеров для применения этих вещей. Не стесняйтесь
экспериментировать и пробовать различные варианты. Именно так и
изучаются языки программирования — на примерах. Используйте для
поиска новых решений и скриптов Интернет, подпишитесь на рассылки по
РНР для получения новой информации. Если не все понятно — смело
задавайте вопросы, я постараюсь по мере сил и знаний ответить на
них. И никогда не останавливайтесь на достигнутом, так как всегда
существует то, что мы еще пока не знаем, а ведь так хочется…

Опубликовал Kest October 26 2008 12:44:07 · 0 Комментариев · 10934 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Страница 2 из 2 < 1 2
Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
EMS QuickExport S...
Фундаментальные а...
Tag Игра "Пятнашк...
База игр
БД сеть компьютер...
Алгоритм DES шифр...
Еext Editor
Java 2 - Эффектив...
PBFoldder
AJAX и PHP. разра...
Task Shedule
ZipForge
JBlabel3D
XPButtons
Расширенный загру...
Аватары в комме...
Последние загруж...
Delphi 7: Для про...
Основы Delphi. Пр...
Borland Delphi 6....

Топ загрузок
Приложение Клие... 100774
Delphi 7 Enterp... 97839
Converter AMR<-... 20268
GPSS World Stud... 17014
Borland C++Buil... 14193
Borland Delphi ... 10293
Turbo Pascal fo... 7374
Калькулятор [Ис... 5984
Visual Studio 2... 5207
Microsoft SQL S... 3661
Случайные статьи
Как конфигурируютс...
Элементы управлени...
Обозначения
Процедура SetPalet...
10.3. Форма запис...
клиентом удаленног...
• Administrators (...
Нетипизированные ф...
Объединение путей.2
Коллекция таблиц, ...
Конфигурации сетей...
Определение вторич...
11.1. Сортировка в...
Особенности органи...
Зять и тёща
DsAuthors. Компьют...
Игровые автоматы с...
Разреженные массивы
«Подводные камни» ...
Проектирование алг...
Глава 12 Защита да...
Явная загрузка мод...
Сохранить нескольк...
Внедрение в эксплу...
Методики авторизац...
Статистика



Друзья сайта
Программы, игры


  • Тут
  • армейский нож по выгодным цене. Работаем на заказ
  • freeknife.ru
Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?