Главная      Учебники - Разные     Лекции (разные) - часть 34

 

Поиск            

 

Учебная книга: Учебник php

 

             

Учебная книга: Учебник php

Краткое содержание

Синтаксис языка и операторы
·Выражения
Функции работы с данными

·Математические функции

·Функции округления

·Случайные числа

·Перевод в различные системы счисления

·Минимум и максимум

·Степенные функции

·Тригонометрия

·Функции повышенной точности BCMath

·Функции GMP

·Функции GMP. Значения функции GMP

·Функции GMP. Арифметика

·Функции GMP. Математика

·Функции GMP. Бинарные операции

·Работа с массивами

·Создание массива

·Сортировка массивов

·Курсор массива

·Ключи и значения

·Комплексная замена в строке

·Работа с несколькими массивами

·Получение и удаление части массива

·Вставка/удаление элементов

·Переменные и массивы

·Строковые функции

·Функции для работы с одиночными символами

·Функции отрезания пробелов

·Поиск в тексте

·Функции сравнения

·Форматирование и вывод строк

·Составление/разбиение строк

·Работа с блоками текста

·Функции для преобразования символов

·Функции изменения регистра

·Установка локали (локальных настроек)

·Преобразование кодировок

·Функции форматных преобразований

·Функции URL

·Работа с бинарными данными

·Строковые суммы и хеш-функции

·Символические ссылки. Жесткие ссылки

·Функции даты и времени

·Логические функции определения типа переменной

·Функции переменных

·Функции для работы с функциями

·Календарные функции

Файлы и сети

·Работа с файлами

·Открытие файла

·Закрытие файла

·Чтение и запись

·Положение указателя текущей позиции

·Функции для определения типов файлов

·Определение параметров файла

·Функции для работы с именами файлов

·Функции манипулирования целыми файлами

·Другие функции

·Функции для работы с каталогами

·Манипулирование каталогами

·Работа с записями

·FTP

·Работа с FTP-сервером

·Работа файлами

·Функции IMAP

·Функции SNMP

·Функции Vmailmgr

·Сетевые функции

Управляющие функции

·Отслеживание и обработка ошибок

·Введение

·Функции обработки ошибок

·Установка пользовательского обработчика ошибок

·Управление сессиями

·Зачем нужны сессии.Механизм работы сессий

·Инициализация сессии и регистрация переменных

·Имя группы сессии

·Идентификатор сессии

·Другие функции

·Обзор обработчиков

·Про сессии и Cookies

·Работа с WWW

·Установка заголовков ответа

·Получение заголовков запроса

·Работа с Cookies

·SSI и функция virtual()

·Управление выводом

·Введение

·Функции управления выводом

·Управление исполнением сценария PHP

·Функции управления сценарием

·Статус подключений

·Дополнительные функции

·Почтовые функции

·Функции запуска программ

·Функции динамической загрузки

·Информационные функции

Взаимодействие с базами данных

·База данных MySQL

·Работа с базами данных

·Обработка результатов запроса

Графика

·Работа с изображениями и библиотека GD

·Параметры изображения

·Работа с цветом в формате RGB

·Графические примитивы

·Работа с фиксированными шрифтами

·Работа со шрифтами TrueType

·PDF-документы

·Введение

·Открытие документа

·Работа с текстом

·Установка масштаба и системы координат

·Черчение и заполнение фигур

·Размещение рисунков

·Стиль документа

Выражения

if
Позволяет организовывать выполнение фрагментов кода по условию.

Синтаксис :
if (выражение ) statement

Может иметь неограниченную степень вложенности в другие IF.

if($a>$b) print "$a больше $b";if($a>$b){echo "$a больше $b;$b=$a;}

else
Расширяет возможности IF по части обработки вариантов выражения, когда оно равно FALSE.

Выражение ELSE выполняется только если IF равно FALSE.

if ($a>$b) {echo "a больше b";} else {echo "a меньше b";}

elseif
Является комбинацией IF и ELSE. Позволяет выполнить выражение, если значение IF равно FALSE, но в отличии от ELSE оно выполниться, если выражение ELSEIF равно TRUE.

if ($a>$b) { echo "a больше b";} elseif ($a==$b) { echo "a равно b";} else { echo "a меньше b";}

if_endif
Один из возможных вариантов группирования операторов с оператором IF.

Удобно при внедрении больших блоков HTML-кода внутрь оператора IF.

if ($a==1): echo "a равно 1";elseif ($a==2): echo "a равно 2";else: echo "а не равно 1 и 2";endif;<?php if ($a==5):?>A=5<?php endif;?>-Блок HTML-кода A=5 будет виден, если выполнется условие $a==5

while
Простейший тип цикла в PHP. Заставляет PHP выполнять вложенные операторы до тех пор, пока условие равно TRUE. Если условие равно FALSE с самого начала, то цикл не выполнится не разу.

Синтаксис : WHILE(условие )выражения

Можно сгруппировать несколько операторов внутри фигурных скобок или использовать альтернативный синтаксис :
WHILE(условие )выражения... ENDWHILE;

$a=1;while ($a<=5) { echo $a++; }$a=1;while ($a<=5): echo $a;$a++;endwhile;

- Эти два примера выводят номера с 1 до 5.

do_while
Цикл, аналогичный WHILE, но значение логического выражения проверяется не до, а после окончания итерации. Основное отличие - то что цикл хоть один раз но выполнится.

$a=1;do { echo $a;} while ($a>1);

Можно прекратить использовать блок операторов в середине путем внедрения оператора BREAK в цикл DO..WHILE(0) :

do { if ($a==5) { echo "A равно 5" break; } $a *= $b; if ($a<$minimum) { break; } echo "A равен $a";} while(0);

for
Наиболее мощный цикл в PHP.

Синтаксис :
FOR (условие1 ; условие2 ; условие3 )выражения

условие1 - Безусловно выполняется (вычисляется) в начале цикла
условие2 - Проверяется в начале каждой итерации. Если оно равно TRUE, то цикл продолжается и выполняются вложенные операторы. Если оно равно FALSE, то цикл заканчивается.
условие3 - Выполняется (вычисляется) в конце каждой итерации.
Каждое из этих условий может быть пустым.

Пример 1: for ($a = 1; $a <= 5; $a++) {echo $a;}Пример 2: for ($a = 1;;$a++) { if ($a > 5) { break; } echo $a;}Пример 3: $a = 1;for (;;) { if ($a > 5) { break; } print $a; $a++;}Пример 4: for ($a = 1; $a <= 5; print $a, $a++);

PHP поддерживает альтернативный синтаксис FOR:
FOR(усл1; уcл2; усл3; ):операторы;...;ENDFOR;

break
Прерывает выполнение текущего цикла.

Пример : $a = 0;while ($a < 5) { if ($arr[$a] == "stop") {break; } $a++;}

continue
Переходит на начало ближайшего цикла.

while (list($key,$value) = each($arr)) { if ($key % 2) { continue; } do_something_odd ($value);}

switch
Сравнивает переменную или выражение с различными значениями и выполняет различные фрагменты кода в зависимости от того, чему будет равно значение выражения.

switch ($a) { case 0: echo "A равно 0"; break; case 1: echo "A равно 1"; break; case 2: echo "A равно 2"; break; default: echo "A неравно 0, 1, 2";}

default - соответствует всем значениям, которые не удовлетворяют другим CASE. CASE - могут быть любого скалярного типа, т.е. целые числа или числа с плавающей запятой и строки.

require
Заменяет себя содержимым указанного файла.

Пример :
require("include.inc");

Но его нельзя поместить внутрь цикла и ожидать, что он включит содержимое другого файла несколько раз в процессе каждой итерации. Для этого есть INCLUDE.

include
Вставляет и выполняет содержимое указанного файла.

$files = array ("first.inc", "second.inc", "third.inc");for ($a = 0; $a < count($files); $a++) {include($files[$a]);}

Так как INCLUDE() это специальный оператор, требуется заключать его в фигурные скобки при использовании внутри условного оператора.

if ($a < 5) { include("file_1.inc");} else { include("file_2.inc");}

function
Объявление функции.

Внутри функции может быть любой верный код PHP, даже объявление другой функции или класса. Функции должны быть объявлены перед тем, как на них ссылаться.

function foo ($arg_1, $arg_2,...,$arg_n) { echo "Примерфункции."; return $retvalue;}

Возвращение результатов :
Результаты возвращаются через необязательный оператор return.
Возвращаемый результат может быть любого типа, включая списки и объекты.

function my_sqrt ($num) { return $num * $num;}echo my_sqrt(4); //выведет 16

Множественные результаты не могут быть возвращены в качестве результата, но вы можете реализовать это путем возврата списка :

function foo() { return array (0, 1, 2);}list ($zero, $one, $two) = foo();

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

function takes_array($input) { echo "$input[0] + $input[1] = ", $input[0]+$input[1];}

Передача по ссылке :
По умолчанию, аргументы функции передаются по значению. Для изменения аргументов в функции их надо передавать по ссылке.
Для этого надо поставить амперсанд (&) перед именем аргумента в объявлении функции :

function foo( &$bar) { $bar .= "и добавочная строка.";}$str = "Это строка, ";foo($str);echo $str; // выведет : "Это строка, и добавочная строка."function foo($bar) { $bar .= "и добавочная строка.";}$str = "Это строка, ";foo($str);echo $str; //выведет : "Это строка, "foo(&$str);echo $str; //выведет : "Это строка, и добавочная строка."

Значения по умолчанию :
Значение по умолчанию должно быть константой, а не переменной или членом класса.

function day ($type = "понедельник") { echo "Сегодня $type.";}echo day(); //выведет : Сегодня понедельник.echo day("вторник"); //выведет : Сегодня вторник.

Аргументы по умолчанию при описании должны находиться справо от остальных аргументов.

function day($day_num, $type = "понедельник") { return "Сегодня $day_num - $type.";}

old_function
Оператор OLD_FUNCTION позволяет вам определяить функцию используя синтаксис PHP/FI2 (за исключением того, что вы должны заменить "function" на "old_function").

Это свойство только для совместимости и должно использоваться лишь конверторами PHP/FI2 -> PHP3. Описанные таким образом функции не могут быть вызваны из служебного кода PHP. Вы можете обойти это путем введения специальной функции в терминах PHP3, которая будет вызывать OLD_FUNCTION.

class
Набор переменных и функций, работающих с этими переменными.

<?phpclass Cart { var $items; // Количество вещей в корзине покупателя // Добавить $num наименований типа $artnr в корзинуfunction add_item ($artnr, $num) { $this->items[$artnr] += $num; } // Убрать $num наименований $artnr изкорзины function remove_item ($artnr, $num) { if ($this->items[$artnr] > $num) { $this->items[$artnr] -= $num; return true;} else { return false; } }}?>

Классы это типы, то есть, заготовки для реальных переменных. Вы должны создавать переменные желаемого типа, используя оператор new :
$cart = new Cart;
$cart->add_item("10", 1);

Классы могут быть расширениями других классов. Расширенный класс обладает всеми переменными и функциями базового класса и тем, что вы определите при расширении класса. Это делается используя ключевое слово extends :

class Named_Cart extends Cart {var $owner; function set_owner ($name) {$this->owner = $name; }}

Это определяет класс Named_Cart, который имеет все переменные и функции класса Cart плюс дополнительную переменную $owner и дополнительную функцию set_owner(). Вы можете создать поименованую корзину обычным образом и установить или получить владельца корзины. Также вы можете использовать и нормальные функции корзины в поименованой корзине :

$ncart = new Named_Cart; //Создатькорзину$ncart->set_owner ("kris");//Указатьвладельцаprint $ncart->owner; //Распечатать имя владельца корзины$ncart->add_item ("10", 1);//унаследовано из обычной корзины

Функции округления

abs
Возвращает модуль числа.

Синтаксис :
mixed abs(mixed $number)

Тип параметра $number может быть float или int, а ти п возвращаемого значения всегда совпадает с типом этого параметра.

$x = abs(-4); // $x=4$x = abs(-7.45); // $x=7.45

round
Округление дробного числа до целого.

Синтаксис :
double round(double $val)

Округляет $val до ближайшего целого и возвращает результат.

$foo = round(3.4); // $foo == 3.0$foo = round(3.5); // $foo == 4.0$foo = round(3.6); // $foo == 4.0$x = round(5.3); // $x=5$x = round(5.4); // $x=5$x = round(5.45); // $x=5$x = round(5.5); // $x=6

ceil
Дополнение дробного числа до следующего целого.

Синтаксис :
int ceil(float $number)

Возвращает наименьшее целое число, не меньше $number . Разумеется, передавать в $number целое число бессмысленно.

$x = ceil(5.0); // $x=5$x = ceil(5.1); // $x=6$x = ceil(5.9); // $x=6

floor
Удаление дробной части числа.

Синтаксис :
int floor(float $number)

Возвращает максимальное целое число, не превосходящее $number .

$x = floor(5.1); // $x=5$x = floor(5.9); // $x=5

Случайные числа

srand
Производит инициализацию генератора случайных чисел.

Синтаксис :
void srand(int seed)

Инициализирует генератор случайных чисел занчением seed.

srand((double) microtime()*1000000);$random = rand();echo $random;

Вот что получиться:

1041755481

getrandmax
Возвращает максимально возможное случайное число.

Синтаксис :
int getrandmax()

Эта функция возвращает максимальное значение, которое можно получить при помощи функции генерации случайных чисел rand().
Обычно это 32767

rand
Производит генерацию случайного числа.

Синтаксис :
int rand([int max [, int min]])

При вызове с необязательными параметрами min и max эта функция генерирует случайное число, лежащее в пределах этих параметров включительно.
Если параметры min и max отсутствуют, возвращается число, лежащее в пределах от 0 до RAND_MAX.
Для корректной работы данной функции перед ее использованием нужно проинициализировать генератор случайных чисел функцией srand().

mt_rand
Функция возвращает MT-случайное число, достаточно равномерно даже для того, чтобы использовать его в криптографии.

Синтаксис :
int mt_rand(int $min=0, int $max=RAND_MAX)

Если вы хотите генерировать числа не от 0 до RAND_MAX (эта константа задает максимально допустимое случайное число, и ее можно получить при помощи вызова mt_getrandmax() ), задайте соответствующий интервал в параметрах $min и $max . Не забудьте только перед первым вызовом этой функции запустить mt_srand() .

mt_srand(time()+(double)microtime()*1000000);$x = mt_rand(1,100); // $x - значение от 1 до 100

mt_srand
Настраивает MT-генератор случайных чисел на новую последовательность.

Синтаксис :
void mt_srand(int $seed)

Дело в том, что хотя числа, генерируемые mt_rand(), достаточно равновероятны, но у них есть один нелостаток: последовательность сгенерированных чисел будет одинакова если сценарий вызывать несколько раз подряд. Функция mt_srand() как раз решает данную проблему: она выбирает новую последовательность на основе параметра $seed , причем практически непредсказуемым образом.

mt_srand(time()+(double)microtime()*1000000);for($i=0;$i<=10;$i++) { $x = mt_rand(1,10);};

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

mt_getrandmax
Возвращает максимальное MT-случайное число.

Синтаксис :
int mt_getrandmax()

Возвращает максимальное число, которое может быть сгенерированно функцией mt_rand() - иными словами, константу RAND_MAX

$max = mt_getrandmax();// $max = 2147483647

lcg_value
функция генерирует случайное дробное число.

Синтаксис :
double lcg_value()

Эта функция возвращает псевдослучайное дробное число в диапазоне от 0 до 1.

Перевод в различные системы счисления

base_convert
Конвертация числа из одной системы счисления в другую.

Синтаксис :
string base_convert(string $number, int $frombase, int $tobase)

Переводит число $number (заданное как строка в системе счисления по основанию $frombase ) в систему по основанию $tobase . Параметры $frombase и $tobase могут принимать значения только от 2 до 36 включительно. В строке $number цифры обозначают сами себя, а буква a соответствует 11, b -12, и т.д. до z , которая обозначает 36. Например, следующие команды выведут 11111111 (8 единичек), потому что это - не что иное, как представление шестнадцатиричного числа FF в двоичной системе счисления:

$x = base_convert("FF",16,2); //$x = 11111111$x = base_convert("11111111",2,16); //$x = FF$x = base_convert("200",10,16); //$x = C8

bindec
Производит конвертацию двоичного числа в десятичное.

Синтаксис :
int bindec(string binary_string)

Преобразует двоичное число, заданное в строке binary_string , в десятичное число. Максимальное число, которое еще может быть преобразовано, равно 2 147 483 647

$x = bindec(11111111); // $x = 255$x = bindec(10101010); // $x = 170$x = bindec(2147483647); // $x = 1111111111111111111111111111111

decbin
Производит конвертацию десятичного числа в двоичное.

Синтаксис :
string decbin(int $number)

Возвращает строку, представляющую собой двоичное представление целого числа $number . Максимальное число, которое еще может быть преобразовано, равно 2 147 483 647, которое выглядит как 31 единичка в двоичной системе.

Существует аналогичные функции для восьмеричной и шестнадцатиричной систем. Называются они так же, только вместо "bin" подставляются соответственно "oct" и "hex".

$x = decbin(255); // $x = 11111111$x = decbin(2147483647); // $x = 1111111111111111111111111111111

dechex
Производит конвертацию десятичного числа в шестнадцатеричное.

Синтаксис :
string dechex(int number)

Возвращает строку, представляющую собой шестнадцатеричное представление целого числа number . Максимальное число, которое еще может быть преобразовано, равно 2 147 483 647

$x = dechex(2147483647); // $x = 7fffffff

decoct
Производит конвертацию десятичного числа в восьмеричное.

Синтаксис :
string decoct(int number)

Возвращает строку, представляющую собой восьмеричное представление целого числа number . Максимальное число, которое еще может быть преобразовано, равно 2 147 483 647

$x = dechex(2147483647); // $x = 17777777777

hexdec
Производит конвертацию шестнадцатеричного числа в десятичное.

Синтаксис :
int hexdec(string hex_string)

Преобразует шестнадцатеричное число, заданное в строке hex_string , в десятичное число. Максимальное число, которое еще может быть преобразовано, равно 7fffffff

$x = hexdec(7fffffff); // $x = 2147483647

octdec
Производит конвертацию восьмеричного числа в десятичное.

Синтаксис :
int octdec(string octal_string)

Преобразует восьмеричное число, заданное в строке octal_string , в десятичное число. Максимальное число, которое еще может быть преобразовано, равно 17777777777

$x = octdec(17777777777); // $x = 2147483647

deg2rad
Производит конвертацию градусов в радианы.

Синтаксис :
double deg2rad(double number)

Преобразует градусы, заданные в параметре number , в радианы.

rad2deg
Производит конвертацию радианов в градусы.

Синтаксис :
double rad2deg(double number)

Преобразует радианы, заданные в параметре number , в градусы.

number_format
Форматирование числа.

Синтаксис :
number_format($number, $decimals, $dec_point=".", $thousands_sep=",");

Эта функция форматирует число с плавающей точкой с разделением его на триады с указанной точностью. Она может быть вызвана с двумя или четырьмя аргументами, но не с тремя! Параметр $decimals задает, сколько цифр после запятой должно быть у числа в выходной строке. Параметр $dec_point представляет собой разделитель целой и дробной частей, а параметр $thousands_sep - разделитель триад в числе (если указать на его месте пустую строку, то триады не отделяются друг от друга).

Минимум и максимум

min
Эта функция возвращает наименьшее из чисел, заданных в ее аргументах.

Синтаксис :
mixed min(mixed $arg1 [int $arg2, ..., int $argn])

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

$x = min(5,3,4,6,5,6,8,9);// $x = 3$x[0]=4;$x[1]=1;$x[2]=5;$x[3]=2;echo min($x); // выведет 1

max
Получение наибольшего аргумента.

Синтаксис :
mixed max(mixed $arg1 [int $arg2, ..., int $argn])

Функция работает аналогично min() , только ищет максимальное значение.

$x = max(5,3,4,6,5,6,8,9);// $x = 9$x[0]=4;$x[1]=1;$x[2]=5;$x[3]=2;echo max($x); // выведет 5

Степенные функции

sqrt
Возвращает квадратный корень из аргумента.

Синтаксис :
float sqrt(float $arg)

Если аргумент отрицателен, то генерируется предупреждение, но работа программы не прекращается!

$x = sqrt(9); // $x = 3echo sqrt(25); // выведет 5echo sqrt(-25); // выведет -1.#IND

log
Возвращает натуральный логарифм аргумента.

Синтаксис :
float log(float $arg)

В случае недопустимого числа печатает предупреждение, но не завершает программу.

$x = log(exp(2)); // exp(2) - e в степени 2 // $x = 2$x = log(M_E); // $x = 1echo log(10); // выведет 2.302585092994

log10
Возвращает десятичный логарифм аргумента.

Синтаксис :
float log10(float $arg)

В случае недопустимого числа печатает предупреждение, но не завершает программу.

echo log10(100); // выведет 2

exp
Возвращает e (2,718281828) в степени $arg .

Синтаксис :
float exp(float $arg)

$x = exp(1); // $x = 2.718281828459

pow
Возведение в степень.

Синтаксис :
float pow(float $base, float $exp)

Возвращает $base в степени $exp .

$x = pow(3,2); // $x = 9$x = pow("3",2); // $x = 9

Тригонометрия

sin
Возвращает синус аргумента.

Синтаксис :
float sin(float $arg)

Аргумент задается в радианах.

$x = sin(M_PI_2); // $x = 1

cos
Возвращает косинус аргумента.

Синтаксис :
float cos(float $arg)

$x = cos(0); // $x = 0$x = cos(M_PI); // $x = -1

tan
Возвращает тангенс аргумента, заданного в радианах.

Синтаксис :
float tan(float $arg)

$x = tan(M_PI_4); // $x = 1

acos
Возвращает арккосинус аргумента.

Синтаксис :
float acos(float $arg)

$x = acos(0); // $x = pi/2$x = acos(1); // $x = 0

asin
Возвращает арксинус.

Синтаксис :
float asin(float $arg)

$x = asin(0); // $x = 0$x = asin(1); // $x = pi/2

atan
Возвращает арктангенс аргумента.

Синтаксис :
float atan(float $arg)

$x = atan(0); // $x = 0$x = atan(1); // $x = pi/4

atan2
Получение арктангенса двух чисел.

Синтаксис :
float atan2(float $y, float $x)

Возвращает арктангенс величины $y/$x , но с учетом той четверти, в которой лежит точка ($x,$y ). Эта функция возвращает результат в радианах, принадлежащий отрезку от -? до ?.

$x = atan2(1,1); // $x = pi/4$x = atan2(-1,-1); // $x = -3*pi/4

pi
Возвращает число пи - 3,14.

Синтаксис :
double pi()

Эту функцию обязательно нужно вызывать с парой пустых скобок:

$x = pi()*2 // $x = 31.415926535898

Функции повышенной точности BCMath

bcadd
Сложение двух чисел произвольной точности.

Синтаксис :
string bcadd(string left_operand, string right_operand [, int scale]);

Эта функция возвращает строковое представление суммы двух параметров (left_operand + right_operand) с точностью, которая указана в необязательном параметре scale.
Точность (scale) указывает количество десятичных знаков после запятой).

bccomp
Сравнение двух чисел произвольной точности.

Синтаксис :
int bccomp(string left_operand, string right_operand, [int scale]);

Сравниваетчисла (left_operand с right_operand) ивозвращаетрезультаттипа integer (целое). Параметр scale используется для установки количества цифр после десятичной отметки, используемых при сравнении. При равенстве двух частей возвращается значение 0. Если левая часть больше правой части возврашается +1, и если левая часть меньше правой части возвращается -1.

bcdiv
Операция деления для двух чисел произвольной точности.

Синтаксис :
string bcdiv(string left_operand, string right_operand [, intscale]);

Делит left_operand на right_operand ивозвращаетрезультатсточностью(знаками после запятой), заданной в параметре scale.

bcmod
Возвращает остаток целочисленного деления.

Синтаксис :
string bcmod(left_operand, string modulus);

Данная функция возвращает остаток от целочисленного деления left_operand на modulus.

bcmul
Операция умножения для двух чисел произвольной точности.

Синтаксис :
string bcmul(string left_operand, string right_operand [, int scale]);

Производит умножение left_operand на right_operand, и выдает результат в виде строки с точностью, заданной в переменной scale.

bcpow
Возведение одного числа произвольной точности в степень другого.

Синтаксис :
string bcpow(string x, string y, [int scale]);

Возведение x в степень y. Параметр scale может использоваться для установки количества цифр после точки.

bcscale
Устанавливает точность вычислений.

Синтаксис :
string bcscale(int scale);

Эта функция устанавливает заданную по умолчанию точность вычислений для всех математических функций BCMath, которые явно не определяют точность.

bcsqrt
Получение квадратного корня числа произвольной точности.

Синтаксис :
string bcsqrt(string operand [,int scale]);

Возвращает кваддратный корень аргумента operand. Параметр scale устанавливает количество цифр после десятичной отметки в результате.

bcsub
Вычитает одно число произвольной точности из другого.

Синтаксис :
string bcsub(string left_operand, right_operand [, int scale]);

Возвращает разность двух переменных, указанных в параметрах функции (left_operand - right_operand) с точностью, указанной в необязательном параметре scale.

Функции GMP

Функции этого вида позволяют работать с целыми числами повышенной точности определенного формата используя библиотеку GNU MP.
Эта библиотека не входит в стандартный пакет PHP. Загрузить коды библиотеки и документацию по ней можно на сайте http://www.swox.com/gmp/.

Функции, приведенные в этой библиотеке, могут также работать с обычными целочисленными аргументами. В этом случае они будут автоматически преобразовываться в формат GMP. Но для увеличения производительности рекомендуется все же использовать числа формата GMP.

Функции GMP. Значения функции GMP

gmp_init
Создает число GMP.

Синтаксис :
resource gmp_init(mixed number)

Число GMP создается из целочисленного или строкового аргумента.
В строке может быть указано число десятеричного или шестнадцатеричного формата. Если это шестнадцатеричный формат, то перед числом должен стоять префикс 0x.

$x = gmp_init(45);$y = gmp_init("46");$z = gmp_init("0xfa4b");

Данная функция не обязательна (аргументы автоматически конвертируются в формат GMP), но желательна (при использовании функции gmp_init() повышается быстродействие).

gmp_intval
Преобразование GMP-числа в целое.

Синтаксис :
int gmp_intval(resource gmpnumber)

Эта функция конвертирует GMP-число в целое в том случае, если получаемое число не превышает своего максимально допустимого размера.

gmp_strval
Преобразование GMP-числа в строку.

Синтаксис :
string gmp_strval(resource gmpnumber [, int base])

Функция возвращает число gmpnumber в строковом формате в системе счисления, заданной в необязательном параметре base. По умолчанию возвращает в десятичной системе счисления).
Параметр base может принимать значения от 2 до 36.

$x = gmp_init("0xf1a5");echo "Вдесятичной : ".gmp_strval($x);echo "В base-36: ".gmp_strval($x,36);

gmp_abs
Вычисляет модуль GMP-числа.

Синтаксис :
resource gmp_abs(resourse x)

Возвращает абсолютное значение числа, заданного в параметре x.

gmp_sign
Возвращает знак числа.

Синтаксис :
int gmp_sign(resource x)

Функция gmp_sign() возвратит 1, если x - положительное число, и 0 - если отрицателоное.

gmp_neg
Возвращает отрицательное значение числа.

Синтаксис :
recource gmp_neg(resource x)

Возвратит -x.

Функции GMP. Арифметика

gmp_add
Сложение двух чисел.

Синтаксис :
recource gmp_add(resource x, recource y)

Функция возвратит GMP-число, равное сумме аргументов x и y.

gmp_sub
Вычитание двух чисел.

Синтаксис :
recource gmp_sub(resource x, recource y)

Функция возвратит GMP-число, равное разности аргументов x и y.

gmp_mul
Умножение двух чисел.

Синтаксис :
recource gmp_mul(resource x, recource y)

Функция возвратит GMP-число, равное произведению аргументов x и y.

gmp_div
Деление двух чисел.

Синтаксис :
recource gmp_div(resource x, recource y [, int round])

Функция возвратит GMP-число, равное делению аргументов x на y. В зависимости от необязательного параметра round, результат деления будет округляться следующим образом:

· GMP_ROUND_ZERO - цифры после точки отбрасываются

· GMP_ROUND_PLUSINF - результат деления округляется в большую сторону

· GMP_ROUND_MINUSINF - результат деления округляется в меньшую сторону

Эта функция - синоним gmp_div_q().

gmp_div_q
Деление двух чисел.

Синтаксис :
recource gmp_div_q(resource x, recource y [, int round])

Функция возвратит GMP-число, равное делению аргументов x на y. В зависимости от необязательного параметра round, результат деления будет округляться следующим образом:

· GMP_ROUND_ZERO - цифры после точки отбрасываются

· GMP_ROUND_PLUSINF - результат деления округляется в большую сторону

· GMP_ROUND_MINUSINF - результат деления округляется в меньшую сторону

У этой функции есть синоним - gmp_div().

gmp_div_r
Возвращате остаток от целочисленного деления.

Синтаксис :
recource gmp_div_r(resource x, recource y [, int round])

Функция возвращает остаток от деления x на y. Знак будет наследован от аргумента x.

gmp_div_qr
Производит деление с остатком.

Синтаксис :
array gmp_div_qr(resource x, recource y [, int round])

Данная функция комбинирует в себе действие двух предыдущих функций gmp_div_q() и gmp_div_r(). Она возвращает массив, состоящий из двух элементов: под индексом [0] - целое частное, под индексом [1] - остаток деления.

$x=gmp_init("0xf3c3b5");$result=gmp_div_qr($x, "0xb1");echo "Целое: ".gmp[strval($result[0]);echo "Остаток: ".gmp[strval($result[1]);

gmp_mod
Возвращает модуль остатка деления.

Синтаксис :
resource gmp_mod(resource x, recource y)

Данная функция эквивалентна gmp_div_r(), за исключением того, что она возвращает абсолютное значение.

gmp_divexact
Производит безостаточное деление.

Синтаксис :
resource gmp_divexact(resource x, recource y)

Данная функция использует алгоритм "точного" деления. Результат будет достоверным, только если x будет нацело делим y.

gmp_cmp
Производит сравнение двух чисел.

Синтаксис :
int gmp_cmp(resource x, recource y)

Функция возвратит положительное значение, если x > y; ноль, елси x = y; отрицательное значени, если x < y.

Функции GMP. Математика

gmp_fact
Вычисляет факториал.

Синтаксис :
resource gmp_fact(resourse x)

Возвращает факториал числа, заданного в параметре x.

gmp_sqrt
Вычисляет квадратный корень.

Синтаксис :
resource gmp_sqrt(resourse x)

Возвращает квадратный корень числа, заданного в параметре x.

gmp_sqrtrm
Вычисляет квадратный корень с остатком.

Синтаксис :
array gmp_sqrtrm(resourse x)

Данная функция возвращает массив, в котором элемент с индексом [0] - это квадратный корень аргумента, элемент с индексом [1] - разность между аргументом и элементом [0] в квадрате.

gmp_perfect_square
Определяет, является ли число полным квадратом.

Синтаксис :
bool gmp_perfect_square(resourse x)

Функция gmp_perfect_square() возвратит true, если x является квадратом целого числа. В противном случае вернет false.

gmp_pow
Возведение в степень.

Синтаксис :
resource gmp_pow(resourse x, int y)

Эта функция возвращает результат, равный возведения аргумента x в степень y, при условии, что y не отрицательный.

echo gmp_pow(2,3); // Выведет 8echo gmp_pow(0,0); // Выведет 1

gmp_powm
Возвращает остаток деления степени числа.

Синтаксис :
resource gmp_powm(resourse x, resource y, resource mod)

Возвращает остаток от деления (x в степени y) на mod, в случае, если y положетелен.

gmp_prob_prime
Проверка "вероятно" простого числа.

Синтаксис :
int gmp_prob_prime(resourse x [, int reps])

Эта функция возвратит 0, в случае если x сложное число, т.е. имеющее более двух целых делителей. Возвратит 1, если x, возможно, простое число. Если возвращает 2, то тогда x - наверняка простое число.
Аргумент reps определяет качество проверки. Чем большее это число, тем точнее результат. Может принимать занчения от 5 до 10 (по умолчанию).

Эта функция использует алгоритм вероятностного теста Миллера-Рабина.

gmp_gcd
Находит наибольший общий делитель.

Синтаксис :
resource gmp_gcd(resourse x, resource y)

Всегда возвращает положительный результат.

gmp_gcdext
Нахождение наибольшего общего делителя со множителями.

Синтаксис :
array gmp_gcdext(resourse x, resource y)

Функция gmp_gcdext() возвращает массив со значениями g,s,t, такими, что x*s+y*t=g=НОД(x,y), гдн НОД - наибольший общий делитель.

gmp_invert
Производит инверсию по модулю.

Синтаксис :
resource gmp_invert(resourse x, resource y)

Функция возвращает дополнение x до значения, делящегося нацело на y.Вслучае, если результат не может быть найден, возвращает false.

gmp_legendre
Возвращает число Легранжа.


Синтаксис :
int gmp_legendre(resourse x, resource p)

Функция возвращает число Легранжа. p должен быть четным положительным.

gmp_jacobi
Возвращает число Якоби.


Синтаксис :
int gmp_jacobi(resourse x, resource p)

Функция возвращает число Якоби. p должен быть четным положительным.

gmp_random
Производит генерацию случайного числа.

Синтаксис :
resource gmp_random(int limited)

limited задает длину генерируемого числа. В случае, если значение limited отрицательно, генерируется отрицательное число.

gmp_popcount
Получение популяции.

Синтаксис :
int gmp_popcount(resource x)

Функция возвращает числитель популяции.

gmp_hamdist
Вычисление дистанции.

Синтаксис :
int gmp_hamdist(resource x, resource y)

Функция возвращает дистанцию между числами x и y. Аргументы x и y должны быть неотрицательными.

Функции GMP. Бинарные операции

gmp_and
Логическое И (AND).

Синтаксис :
resource gmp_and(resource x, resource y)

gmp_or
Логическое ИЛИ (OR).

Синтаксис :
resource gmp_or(resource x, resource y)

gmp_xor
Логическое исключающее-ИЛИ (XOR).

Синтаксис :
resource gmp_xor(resource x, resource y)

gmp_setbin
Установка бита.

Синтаксис :
resource gmp_setbin(resource &x, int index [, bool set_clear])

Устанавливает бит в позиции index в числе x. Аргумент set_clear указывает, в какое значение устанавливать бит: 0 или 1 (по умолчанию).

gmp_clrbit
Производит сброс бита.

Синтаксис :
resource gmp_clrbit(resource &x, int index)

Устанавливает бит в позиции index в числе x в значение 0.

gmp_scan0
Производит поиск бита 0.

Синтаксис :
0int gmp_scan0(resource x, int start)

Функция gmp_scan0() ищет в числе x бит 0, начиная с позиции start, в сторону увеличения значимости разрядов. Возвращает позицию найденного бита.

gmp_scan1
Производит поиск бита 1.

Синтаксис :
1int gmp_scan1(resource x, int start)

Функция gmp_scan0() ищет в числе x бит 1, начиная с позиции start, в сторону увеличения значимости разрядов. Возвращает позицию найденного бита.

Создание массива

array
Создание и инициализация массива.

Синтаксис :
array array([mixed ...])

Функция возвращает созданный массив. Индексы и значения в массиве разделяются оператором =>. Пары index=>value разделяются запятыми, они определяют индекс и значение.
Индекс может быть как числовым, так и строковым. В ассоциированных массивах индекс всегда ведет себя как строковой. В случае, если индекс не указан, будет подставляться автоинкремент (на 1 больше), начиная с 0. Если при создании массива были указаны два элемента с одинаковыми индексами, то последний элемент заменяет первый.

$arr=array( // Далее мы создадим двумерный массив"fruit" => array("a"=>"orange", "b"=>"banan", "c"=>"apple"),// эта запись эквивалентна записи: $arr["fruit"]["a"]="orange"; и т.д."number" => array(1,2,3,4,5,6),// эта запись эквивалентна записи: $arr["number"][]=1; и т.д."hotel" => array("first", 5=>"second", "third"));$arr=array(1, 1, 1, 1, 2=>5, 19, 3=>20);print_r($arr);// Далее распечатка этого массиваArray( [0] => 1 [1] => 1 [2] => 5 [3] => 20 [4] => 19)$arr=array(1 => "Январь", "Февраль", "Март");print_r($arr);// распечаткаArray([1] => Январь [2] => Февраль [3] => Март)

range
Заполняет список целыми числами.

Синтаксис :
list range(int low, int high)

Функция range() создает список, заполненный целыми числами от low до high включительно. Ее удобно применять, если мы хотим быстро сгенерировать массив для последующего прохождения по нему циклом forech.

$arr=range(4,9);// теперь $arr = array(4, 5, 6, 7, 8, 9);

Сортировка массивов

array_reverse
Расстановка элементов массива в обратном порядке.

Синтаксис :
array array_reverse(array arr);

Функция array_reverse() возвращает массив, элементы которого следуют в обратном порядке относительно массива, переданного в параметре. При этом связи между ключами и значениями, конечно, не теряются. Например, вместо того, чтобы ранжировать массив в обратном порядке при помощи arsort() , мы можем отсортировать его в прямом порядке, а затем перевернуть:

$A=array("a"=>"Zero","b"=>"Weapon","c"=>"Alpha","d"=>"Processor");

asort($A);

$A = array_reverse($A);

shuffle
Перемешивание элементов массива.

Синтаксис:
void shuffle(array arr);

Функция shuffle() "перемешивает" список, переданный ей первым параметром arr , так, чтобы его значения распределялись случайным образом. При этом измениться сам массив и ассоциативные массивы воспринимаются как списки.

$A = array(10,20,30,40,50);shuffle($A);foreach($A as $v) echo "$v ";// Выведет 10,20,30,40,50 в случайном порядке

sort
Сортировка массива по возрастанию.

Синтаксис:
void sort(array arr [, int sort_flags])

Эта функция предназначена для сортировки списков (списки - массивы, ключи которых начинаются с 0 и не имеют пропусков) в порядке возрастания.

$A = array("One", "Two", "Tree", "Four");sort($A);for($i=0; $i<count($A); $i++) echo "$i:$A[$i] ";// выводит "0:Four 1:Two 2:Tree 3:One"

Любой ассоциативный массив Воспринимается этой функцией как список. То есть после упорядочивания последовательность ключей превращается в 0,1,2,..., а значения нужным образом перераспределяются. Как видим, связи между параметрами ключ=>значение не сохраняются, более того - ключи просто пропадают, поэтому сортировать что-либо, отличное от списка, вряд ли целесообразно.

Аргумент sort_flags задает следующие флаги сортировки:

· SORT_REGULAR - сравнивает элементы "как есть"

· SORT_NUMERIC - сравнивает элементы как числа

· SORT_STRING - сравнивает элементы как строки

rsort
Сортировка массива по убыванию.

Синтаксис:

void rsort(array arr [, int sort_flags])

Аналогична функции sort() , только сортирует по убыванию.

asort
Сортировка ассоциативного массива по возрастанию.

Синтаксис :
void asort(array arr [, int sort_flags]);

Функция asort() сортирует массив, указанный в ее параметре, так, чтобы его значения шли в алфавитном (если это строки) или возрастающем (для чисел) порядке. При этом сохраняются связи между ключами и соответствующими им значениями, т.е. некоторые пары ключ=>значение просто "всплывают" наверх, а некоторые - наоборот, "опускаются".

$A=array("a"=>"Zero","b"=>"Weapon","c"=>"Alpha","d"=>"Processor");asort($A);foreach($A as $k=>$v) echo "$k=>$v ";// выводит "c=>Alpha d=>Processor b=>Weapon a=>Zero"// как видим, поменялся только порядок пар ключ=>значение

По умолчанию функция asort() сортирует массив в алфавитном порядке. Значения флагов сортировки sort_flags приведены в описании функции sort() .

arsort
Сортировка ассоциативного массива по убыванию.

Синтаксис :
void arsort(array arr [, int sort_flags]);

Эта функция аналогична функции asort() , только она упорядочивает массив не по возрастанию, а по убыванию.

$arr=array("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");arsort($arr);reset($arr);while(list ($key, $val) = each ($arr)) { echo "$key = $val<BR>l";}// выведет:a = orange<BR>ld = lemon<BR>lb = banana<BR>lc = apple<BR>l

ksort
Сортировка массива по возрастанию ключей.

Синтаксис :
int ksort(array arr [, int sort_flags]);

Функция практически идентична функции asort() , с тем различием, что сортировка осуществляется не по значениям, а по ключам (в порядке возрастания).

$A=array("d"=>"Zero","c"=>"Weapon","b"=>"Alpha","a"=>"Processor");ksort($A);for(Reset($A); list($k,$v)=each($A);) echo "$k=>$v ";// выводит "a=>Processor b=>Alpha c=>Weapon d=>Zero"

Аргумент sort_flags указывавет параметры сортировки.

krsort
Сортировка массива по убыванию индексов.

Синтаксис :
int krsort(array arr [, int sort_flags]);

Эта функция аналогична функции ksort() , только она упорядочивает массив по ключам в обратном порядке.

natsort
Выполняет "естественную" сортировку массива.

Синтаксис :
void natsort(array arr);

Функция natsort() сортирует массив в "естественном" для человека порядке.

$arr1 = array("html_12.html", "html_10.html", "html_2.html", "html_1.html");$arr2 = $arr1;sort($arr1);echo "Стандартнаясортировка:\n";print_r($arr1);natsort($arr2);echo "Естественная сортировка:\n"print_r($arr2);

Этот пример выведет следующее:

Стандартная сортировка:Array( [0] => html_1.html [1] => html_10.html [2] => html_12.html[3] => html_2.html)Естественная сортировка:Array([3] => html_1.html [2] => html_2.html [1] => html_10.html[0] => html_12.html)

uasort
Пользовательская сортировка ассоциативного массива.

Синтаксис:
void uasort(array arr, function cmp_function)

Функция uasort() сортирует массив arr с сохранением индексных ассоциаций, используя для сравнения индексов элементов пользовательскую функцию, указанную аргументом cmp_function .

uksort
Пользовательская сортировка массива по ключам.

Синтаксис:
void uksort(array arr, function cmp_function)

Функция uksort() сортирует массив arr по индексам с сохранением индексных ассоциаций, используя для сравнения индексов элементов пользовательскую функцию, указанную в аргументе cmp_function . В эту функцию передаются два сравниваемых индекса элементов, а она должна вернуть положительное или отрицательное число или 0.

Довольно часто нам приходится сортировать что-то по более сложному критерию, чем просто по алфавиту. Например, пусть в $Files храниться список имен файлов и подкаталогов в текущем каталоге. Возможно, мы захотим вывести этот список не только в лексографическом порядке, но также чтобы все каталоги предшествовали файлам. В этом случае нам стоит воспользоваться функцией uksort() , написав предварительно функцию сравнения с двумя параметрами, как того требует uksort() .

// Эта функция должна сравнивать значения $f1 и $f2 и возвращать:// -1, если $f1<$f2,// 0, если $f1==$f2// 1, если $f1>$f2// Под < и > понимаем следование этих имен в выводимом спискеfunction FCmp($f1,$f2){ // Каталог всегда предшествует файлуif(is_dir($f1) && !is_dir($f2)) return -1;// Файл всегда идет после каталога if(!is_dir($f1) && is_dir($f2)) return 1; // Иначе сравниваем лексиграфическиif($f1<$f2) return -1; elseif($f1>$f2) return 1; else return 0;}// Пусть $Files содержит массив с ключами - именами файлов// в текущем каталоге. Отсортируем его.uksort($Files,"FCmp"); //передаем функцию сортировки "по ссылке"

usort
Пользоваетльская сортировка массива.

Синтаксис:
void usort(array arr, function cmp_function)

Функция usort() сортирует массив arr с сохранением индексных ассоциаций, используя для сравнения индексов элементов пользовательскую функцию, указанную в аргументе cmp_function . В эту функцию передаются два сравниваемых индекса элементов, а она должна вернуть положительное или отрицательное число или 0.

Эта функция как бы является "гибридом" функций uasort() и sort() . От sort() она отличается тем, что критерий сравнения обеспечивается пользовательской функцией. А от uasort() - тем, что она не сохраняет связей между ключами и значениями, а потому пригодна разве что для сортировки списков.

function FCmp($a,$b) { return strcmp($a,$b); }$A = array("One","Two","Three","Four");usort($A);for($i=0; $i<count($A); $i++) echo "$i:$A[$i] ";// выводит "0:Four 1:One 2:Three 3:Two"

Пример одномерного массива:

function cmp($a, $b) {if($a==$b) return 0; return ($a > $b) ? -1 : 1;}$a=array (3,2,5,6,1);usort($a, "cmp");while(list($key,$val)=each($a)) {echo "$key: $val\n";}

При выполнении будет напечатано:

0: 61: 52: 33: 24: 1

Пример многомерного массива:

function cmp($a,$b) {return strcmp($a["fruit"],$b["fruit"]);};$fruit[0]["fruit"]="lemons";$fruit[1]["fruit"]="apples";$fruit[2]["fruit"]="grapes"; usort($fruit, "cmp"); while(list($key,$val)=each($fruit)) { echo "\$fruit[$key]:".$val["fruit"]."\n";}

При сортировке многомерных массивов $a и $b содержит ссылки на первый индекс массива.
Будет напечатано:

$fruit[0]: apples$fruit[1]: grapes$fruit[2]: lemons

array_multisort
Сортировка релятивных массивов.

Синтаксис :
bool array_multisort(array ar1, [, mixed o1 [, mixed t1 ... [, array ...]]])

Функция array_multisort() сортирует многомерные массивы с сохранением индексной ассоциации, возвращая true при отсутствии ошибок.

Исходные массивы рассматриваются как столбцы таблицы, сортируемой построчно. Поэтому массивы должны иметь одинаковое число элементов, и взаимосвязь между ними, как в строках таблицы, сохраняется. Приоритетом сортировки пользуются первые массивы. Флаги сортировки могут указваться для каждого массива, и их действие распространяется только на тот массив, после которого они указаны.

Флаги определения порядка сортировки (аргументы ox ):

· SORT_ASC - сортировка в порядке возрастания (по умолчанию)

· SORT_DESC - сортировка в порядке убывания Флаги типа сортировки (аргументы tx ):

· SORT_REGULAR - сравнивать элементы как есть (по умолчанию)

· SORT_NUMERIC - сравнивать элементы как числа

· SORT_STRING - сравнивать элементы как строки

ar1 = array("10", 100, 100, "a");ar2 = array(1, 3, "2", 1);array_multisort($ar1, $ar2); // $ar1 = array("10", "a", 100, 100);// $ar2 = array(1, 1, "2", 4);

Элементы второго массива, соответствующие одинаковым элементам (100 и 100) первого массива, также отсортированны.

$ar = array(array("10", 100, 100, "a"), array(1, 3, "2", 1));array_multisort($ar[0], SORT_ASC, SORT_STRING, $ar[1], $SORT_NUMERIC, SORT_DESC);

$ar[0] = ("10", 100, 100, "a") - сортируются как строки по возрастанию $ar[1] = (1, 3, "2", 1) - сортируются как числа по убыванию

Курсор массива

reset
Производит сброс курсора массива.

Синтаксис :
mixed reset(array arr);

Функция reset() устанавливает внутренний курсор массива arr на его начало и возвращает значение начального элемента.

end
Производит перенос курсора в конец массива.

Синтаксис :
mixed end(array arr);

Функция end() устанавливает внутренний курсор массива arr на последний элемент и возвращает значение начального элемента.

next
Производит перенос курсора вперед.

Синтаксис :
mixed next(array arr);

Функция next() возвращает значение элемента, на котором в данный момент находится курсор, и перемещает курсор массива на следующий элемент. Возвращает false, если элементов больше не осталось.

Также false возвращается, если встречается элемент с пустым значением, следовательно для корректной работы с массивом, содержащим пустые элементы, лучще использовать функцию each() .

prev
Производит перенос курсора назад.

Синтаксис :
mixed prev(array arr);

Функция prev() возвращает значение элемента, на котором в данный момент находится курсор, и перемещает курсор массива на предыдущий элемент. Возвращает false, если элементов больше не осталось.

Также false возвращается, если встречается элемент с пустым значением, следовательно для корректной работы с массивом, содержащим пустые элементы, лучще использовать функцию each() .

current
Определение текущего элемента массива.

Синтаксис :
mixed current(array arr);

Функция current() возвращает значение элемента, на котором в данный момент находится курсор массива, при этом не сдвигая курсор.

Функция возвратит false, если курсор оказался вне пределов массива, или массив не имеет элементов.

pos
Определение текущего элемента массива.

Синтаксис :
mixed pos(array arr);

Эта функция синоним функции current() .

key
Функция возвращает индекс текущего элемента массива.

Синтаксис :
mixed key(array arr);

each
Получение текущего элемента массива.

Синтаксис :
array each(array arr);

Функция each() возвращает в массиве пару "индекс и значение" текущего элемента массива, на который указывает внутренний курсор, и сдвигает курсор массива на следующий элемент. Возващаемый массив имеет четыре элемента:

[0] => индекс[1] => "значение"[key] => индекс[value] => "значение"

Функция возвращает false, если курсор достиг конца массива.

$foo = array("bob", "fred", "jussi", "joini", "egon", "marliese");$bar = each($foo);// теперь $bar = (0=>0, 1=>"bob", key=>0, value=>"bob")

Обычно функцию each() используют в паре с list() для перебора элементов массива:

reset($HTTP_POST_VARS);while(list($key, $val) = each($HTTP_POST_VARS)) {echo "$key = %val<BR>";}

array_walk
Применение функции к элементам массива.

Синтаксис :
int array_walk(array arr string func, mixed userdata);

Функция array_walk() применяет пользовательскую функцию func к каждому элементу массива arr . В пользовательскую функцию передаются три или два (в случае, если аргумент userdata не указан) аргумента: значение текущего элемента, его индекс и аргумент userdata .

В случае, если func требует более трех аргументов, при каждом ее вызове будет выдаваться предупреждение. Чтобы блокировать выдачу этих предупреждений, поставте знак "@" перед функцией array_walk() или воспользуйтесь функцией error_reporting() .

Функция func будет получать значения и индексы массива arr по занчению, т.е. не сможет вносить в него изменения. Если это необходимо, передайте аргумент arr по ссылке, указав перед его именем "&", и тогда все изменения отразяться в массиве.

В PHP 4 необходимо явно вызывать функцию reset() , чтобы установить внутренний курсор на первый элемент.

$v = array("d"=>"A1", "a"=>"B2", "b"=>"C3", "c"=>"D4");function test_alter(&$item1, $key, $prefix) { // поссылке $item1 = "$prefix $item1";}; function test_print($item2, $key) { echo "$key. $item2<BR>";}; array_walk($v, "test_print");reset($v);array_walk($v, "test_alter");reset($v);array_walk($v, "test_print");

Ключи и значения

array_flip
Меняет местами индексы и значения массива.

Синтаксис :
array array_flip(array arr)

Эта функция "пробегает" по массиву и меняет местами его ключи и значения. Исходный массив arr не изменяется, а результирующий массив просто возвращается. Конечно, если в массиве присутствовало несколько элементов с одинаковыми значениями, учитываться будет только последний из них:

$A = array("a"=>"aaa", "b"=>"aaa", "c"=>"ccc");

$A = array_flip($A);

// Теперь $A===array("aaa"=>"b", "ccc"=>"c");

array_keys
Возвращает список из ключей массива.

Синтаксис :
list array_keys(array arr [,mixed search_value])

Функция возвращает список, содержащий все ключи массива arr . Если задан необязательный параметр search_value , то она вернет только те ключи, которым соответствуют значения search_value .

$arr = array(0 => 100, "color" => "red", 15);array_keys($arr); // возвратит array(0, "color", 1) $arr = array("blue", "red", "green", "blue", "blue");array_keys($arr, "blue"); // возвратит array(0, 3, 4)

array_values
Удаление ассоциативных индексов массива.

Синтаксис :
list array_values(array arr)

Функция array_values() возвращает список всех значений в ассоциативном массиве arr , т.е. превращает ассоциативный массив в простой (скалярный).

$arr = array("size" => "XL", "color" => "gold");array_values($arr);// возвратит array("XL", "gold")

Очевидно, такое действие бесполезно для списков, но иногда оправданно для хешей.

in_array
Осуществляет проверку массива на наличие значения.

Синтаксис :
bool in_array(mixed val, array arr)

Функция in_array() возвратит true, если в массиве arr содержится элемент со значением var .

$arr = array("1", "2", "tree");if(in_array["2", $arr)) echo "2 есть";

array_count_values
Возвращает количество одинаковых значений массива.

Синтаксис :
array array_count_values(array arr)

Эта функция подсчитывает, сколько раз каждое значение встречается в массиве arr , и возвращает ассоциативный массив с ключами - элементами массива и значениями - количеством повторов этих элементов. Иными словами, функция array_count_values() подсчитывает частоту появления значений в массиве arr .

$LIst = array(1, "hello", 1, "world", "hello");array_count_values($array);// возвращает array(1=>2, "hello"=>2, "world"=>1)

sizeof
Возвращает число элементов массива.

Синтаксис :
int sizeof(array arr)

Функция sizeof() возвращает количество элементов в массиве arr на подобие действия функции count() .

count
Возвращает число элементов в массиве или объекте.

Синтаксис :
int count(mixed var)

Функция count() возвращает число элементов в массиве или объекте var . В случае, если var - скалярная переменная, то функция возвращает 1, если такая переменная существует, или 0, если такой переменной нет.
Надо отметить, что 0 возвращается и тогда, когда указан массив, не содержащий элементов.
Для проверки существования переменной лучше воспользоваться функцией isset() .

$a[0] = 1;$a[1] = 3;$a[2] = 5;$result = count($a) // возвратит 3

array_sum
Возвращает сумму всех элементов массива.

Синтаксис :
mixed array_sum(array arr [, int num_req])

Эта функция возватит сумму всех числовых элементов массива. От типа значений в массиве зависит тип возвращаемого числа (integer или float).

$arr = array(2,4,6,7);echo "Сумма: ".array_sum($arr);// выведет Сумма: 19

array_rand
Производит случайную выборку индексов массива.

Синтаксис :
mixed array_rand(array arr [, int num_req])

Функция array_rand() возвращает в массиве выбранные случайным образом индексы элементов массива arr .
Аргумент num_req указывает число возвращаемых индексов. В случае, если выбирается один элемент, то возвращается не массив, а значение.

srand((double)microtime() *1000000);// здесь мы проинициализировали генератор случайных чисел$arr = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank");$rand_keys = array_rand($arr, 2);echo $arr[$rand_key[0]]."<BR>";echo $arr[$rand_key[1]]."<BR>";

Комплексная замена в строке

strtr
Комплексная замена в строке.

Синтаксис :
string strtr(string str, string from, string to)
string strtr(string str, array from)

В первом случае функция strtr() возвращает строку str , у которой каждый символ, присутствующий в строку from , заменяется на корреспондирующий из строки to . В случае, если строки from и to различной длины, то лишние конечные символы длинной строки игнорируются.

Во втором случае функция strtr() возвращает строку, в которой фрагменты строки str заменяются на соответствующие индексам значения элементов массива from . При этом функция пытается заменить сначало наибольшие фрагменты исходной строки и не выполняет замену в уже модифицированных частях строки. Таким бразом, теперь мы можем выполнить несколько замен сразу:

$Subs = array("<name>" => "Larry", "<time>" => date("d.m.Y"));$st="Привет, <name>! Сейчас <time";echo strtr($st,$Subs);

А вот как можно "отменить" действие функции HtmlSpecialChars() :

$Trans=array_flip(get_html_translation_table());$st=strtr($st, $Trans);

В результате мы из строки, в которой все спецсимволы заменены на их HTML-эквиваленты, получим исходную строку.

Работа с несколькими массивами

array_diff
Определение исключительного пересечения массивов.

Синтаксис :
array array_diff(array arr1, array arr2 [, array ...])

Данная функция возвращает массив, который содержит значения, имеющиеся только в массиве arr1 ( и не имеющиеся в любых других). При этом индексы не сохраняются.

$arr1 = array("a" => "green", "red", "blue");$arr2 = array("b" => "green", "yellow", "red");$result = array_diff($arr1, $arr2);// $result = array("blue")

array_intersect
Определение включительного пересечения массивов.

Синтаксис :
array array_intersect(array arr1, array arr2 [, array ...])

Функция array_intersect() возвращает массив, который содержит значения массива arr1 , имеющиеся во всех остальных массивах. При этом индексы не сохраняются.

$arr1 = array("a" => "green", "red", "blue");$arr2 = array("b" => "green", "yellow", "red");$result = array_intersect($arr1, $arr2);// $result = array("a" => "green", "red")

array_merge
Слияниемассивов.

Синтаксис :
array array_merge(array arr1, array arr2 [, array ...])

Функция array_merge() призвана устранить все недостатки, присущие оператору + для слияния массивов. А именно, она сливает массивы, перечисленные в ее аргументах, в оди большой массив и возвращает результат. Если в массивах встречаются одинаковые ключи, в результат помещается пара ключ=>значение из того массива, который расположен правее в списке аргументов. Однако это не затрагивает числовые ключи: элементы с такими ключами помещаются в конец результирующего массива в любом случае.

$L1=array(10,20,30);$L2=array(100,200,300);$L=array_merge($L1, $L2);// теперь $L===array(10,20,30,100,200,300);

array_merge_recursive
Объединение сложных массивов.

Синтаксис :
array array_merge_recursive(array arr1, array arr2 [, array ...])

Функция array_merge_recursive() сильно напоминает функцию array_merge() с тем дополнением, что она может работать с многомерными и древовидными массивами, а элементы с одинаковыми строковыми индексами превращаются в подмассивы. Для числовых индексов поведение функции аналогично array_merge() .

$arr1 = array("color" => array("favorite" =>"red"), 5);$arr2 = array(10, "color" => array("favorite" =>"green"), "blue");$result = array_merge_recursive($arr1, $arr2);// $result = array("color" => array (// "favorite" => array("red", "green"),// "blue"), 5, 10)

Получение и удаление части массива

array_slice
Получение части массива.

Синтаксис :
array array_slice(array arr, int offset [, int len])

Эта функция возвращает часть ассоциативного массива arr , начиная с элемента со смещением (номером) offset от начала и длиной len (если последний параметр не задан, до конца массива).

Параметры offset и len задаются по точно таким же правилам, как и аналогичные параметры в функции substr() . А именно, если offset>0 , то последовательность будет начинаться с элемента, имеющего позицию offset от начала массива, а если <0, то отсчет производится от конца массива. Надо отметить, что первый элемент имеет нулевую позицию, а последний (-1).
Если указать length >0, то это число возвращаемых в массиве элементов, а если length <0, то это позиция последнего возвращаемого элемента в массиве arr от его конца.

$input = array("a", "b", "c", "e");$output = array_slice($input, 2); // "c", "d", "e"$output = array_slice($input, 2, -1); // "c", "d"$output = array_slice($input, -2, 1); // "d"$output = array_slice($input, 0, 3); // "a", "b", "c"

array_splice
Удаляет часть массива или заменяет ее частью другого массива.

Синтаксис :
array array_splice(array arr, int offset [, int len] [, int repl])

Эта функция, также как и array_slice() , возвращает подмассив arr начиная с индекса offset максимальной длины len , но, вместе с тем, она делает и другое полезное действие. А именно, она заменяет только что указанные элементы на то, что находится в массиве repl (или просто удаляет, если repl не указан). Если offset>0 , то последовательность будет начинаться с элемента, имеющего позицию offset от начала массива, а если <0, то отсчет производится от конца массива. Надо отметить, что первый элемент имеет нулевую позицию, а последний (-1).
Если указать length >0, то это число возвращаемых в массиве элементов, а если length <0, то это позиция последнего возвращаемого элемента в массиве arr от его конца.

$input = array("red", "green", "blue", "yellow");array_splice($input, 2);// Теперь $input===array("red", "green")array_splice($input, 1, -1);// Теперь $input===array("red", "yellow")array_splice($input, -1, 1, array("black", "maroon"));// Теперь $input===array("red", "green", "blue","black", "maroon")array_splice($input, 1, count($input), "orange");// Теперь $input===array("red", "orange")

Последний пример показывает, что в качестве параметра repl мы можем указать и обычное, строковое значение, а не массив из одного элемента.

Вставка/удаление элементов

array_pad
Добавляет в массив несколько элементов.

Синтаксис :
array array_pad(array input, int pad_size, mixed pad_value)

Функция array_pad() возвращает копию массива input , в который были добавлены элементы с значениями pad_value , так, что число элементов в получившемся массиве будет равно pad_size .
Если pad_size >0, то элементы будут добавлены справа, а если <0 - то слева.
В случае, если значение pad_size меньше элементов в исходном массиве input , то никакого добавления не произойдет, и функция вернет исходный массив input .

$arr = array(12, 10, 4);$result = array_pad($arr, 5, 0);// $result = array(12, 10, 4, 0, 0);$result = array_pad($arr, -7, -1);// $result = array(-1, -1, -1, -1, 12, 10, 4)$result = array_pad($arr, 2, "noop");// не добавит

array_pop
Извлекает и удаляет последние элементы массива.

Синтаксис :
mixed array_pop(array arr);

Функция array_pop() снимает элемент с "вершины" стека (то есть берет последний элемент списка) и возвращает его, удалив после этого его из arr . С помощью этой функции мы можем строить конструкции, напоминающие стек. Если массив arr был пуст, функция возвращает пустую строку.

$stack = array("orange", "apple", "raspberry");$fruits = array_pop($stack);// $fruit = "raspberry"// $stack = array("orange", "apple")

array_push
Добавляет элементы в конец массива.

Синтаксис :
int array_push(array arr, mixed var1 [, mixed var2, ..])

Эта функция добавляет к массиву arr элементы var1,var2 и т.д. Она присваивает им числовые индексы - точно так же, как это происходит для стандартных []. Если вам нужно добавить всего один элемент, наверное, проще будет воспользоваться этим оператором:

array_push($Arr,1000); // вызываем функцию$Arr[]=100; // то же самое, но короче

Обратите внимание, что функция array_push() воспринимает массив, как стек, и добавляет элементы всегда в его конец.

array_shift
Извлекает и удаляет первый элемент массива.

Синтаксис :
mixed array_shift(array arr)

Эта функция извлекает первый элемент массива arr и возвращает его. Она сильно напоминает array_pop() , но только получает начальный, а не конечный элемент, а также производит довольно сильную "встряску" всего массива: ведь при извлечении первого элемента приходится корректировать все числовые индексы у всех оставшихся элементов, т.к. все последующие элементы массива сдвигаются на одну позицию вперед.

$ar = array("-v", "-f");$opt = array(_shift($arr);// теперь $arr = array("-f"), а $opt = "-v"

array_unshift
Добавляет элементы в начало массива.

Синтаксис :
int array_unshift(list arr, mixed var1 [,mixed var2, ...])

Функция очень похожа на array_push , но добавляет перечисленные элементы не в конец, а в начало массива. При этом порядок следования var1, var2 и т.д. остается тем же, т.е. элементы как бы "вдвигаются" в список слева. Новым элементам списка, как обычно, назначаются числовые индексы, начиная с 0; при этом все ключи старых элементов массива, которые также были числовыми, изменяются (чаще всего они увеличиваются на число вставляемых значений). Функция возвращает новый размер массива.

$A = array(10,"a"=>20,30);array_unshift($A,"!","?");// теперь $A===array(0=>"!", 1=>"?", 2=>10, a=>20, 3=>30)

array_unique
Создает массив только из уникальных значений.

Синтаксис :
array array_unique(array arr)

Функция array_unique() возвращает массив, составленный из всех уникальных значений массива arr вместе с их ключами, путем удаления всех дублирующих значений. В результирующий массив помещаются первые встретившиеся пары ключ=>значение . Индексы сохраняются.

$input = array("a" => "green", "red", "b" => "green", "blue", "red");$result = array_unique($input);// теперь $result===("a"=>"green", "red", "blue");

Переменные и массивы

list
Заносит элементы массива в переменные.

Синтаксис :
list() - языковая конструкция (наподобие array() ). Она присваивает перечисленным переменным значения элементов массива, причем первой переменной присваивается первый элемент массива, второй переменной - второй элемент и т.д.

compact
Упаковывает в массив переменные из текущего контекста.

Синтаксис :
array compact(mixed varname1 [, mixed $varname2, ...])

Функция compact() упаковывает в массив переменные из текущего контекста (глобального или контекста функции), заданные своими именами в varname1, $varname2 и т.д. При этом в массиве образуются пары с ключами, равными содержимому varnameN , и значениями соответствующих переменных.
Число аргументов может быть неопределенное.
Если в аргументе указано имя несуществующей переменной, он пропускается. Действие этой функции противоположно функции extract() .

$a="Test string";$b="Some text";$A=compact("a","b");// теперь $A===array("a"=>"Test string", "b"=>"Some text")

Почему же тогда параметры функции обозначены как mixed? Дело в том, что они могут быть не только строками, но и списками строк. В этом случае функция последнего перебирает все элементы этого списка, и упаковывает те переменные из текущего контекста, имена которых она встретила. Более того - эти списки могут, в свою очередь, также содержать списки строк, и т.д. Правда, последнее используется достаточно редко.

$a="Test";$b="Text";$c="CCC";$d="DDD";$List=array("b",array("c","d"));$A=compact("a",$List);// теперь $A===array("a"=>"Test", "b"=>"Text", "c"=>"CCC", "d"=>"DDD")

extract
экспорт элементов массива в переменные.

Синтаксис :
void extract(array arr [, int extract_type] [, string prefix])

Эта функция производит действия, прямо противоположные compact() . А именно, она получает в параметрах массив arr и превращает каждую его пару ключ=>значение в переменную текущего контекста.

Параметр extract_type предписывает, что делать, если в текущем контексте уже существует переменная с таким же именем, как очередной ключ в arr . Он может быть равен одной из констант, перечисленных в следующей таблице:

Поведение функции extract в случае совпадения переменных
EXTR_OVERWRITE Переписывать существующую переменную.
EXTR_SKIP Не перезаписывать переменную, если она уже существует.
EXTR_PREFIX_SAME В случае совпадения имен создавать переменную с именем, предваренным префиксом из $prefix .
EXTR_PREFIX_ALL Всегда предварять имена создаваемых переменных префиксом $prefix .


По умолчанию подразумевается EXTR_OVERWRITE , т.е. переменные перезаписываются.

// Сделать все переменные окружения глобальнымиextract($HTTP_ENV_VARS);// То же самое, но с префиксом E_extract($HTTP_ENV_VARS, EXTR_PREFIX_ALL, "E_");echo $E_COMSPEC; // Выводит переменную окружения COMSPEC

Параметр prefix имеет смысл указать только тогда, когда вы применяете режимы EXTR_PREFIX_SAME или EXTR_PREFIX_ALL .

Функции для работы с одиночными символами

chr
Возвращает один символ с определенным кодом.

Синтаксис :
string chr(int ascii)

Возвращает строку из одного символа с кодом $code . Эта функция полезна для вставки каких-либо непечатаемых символов в строку - например, кода нуля или символа прогона страницы, а также при работе с бинарными файлами.

<?// Сначало создаем массив того, что мы собираемся выводить,// не заботясь о форматировании (дизайне) информацииfor($i=0, $x=0; $x<16; $x++) { for($y=0; $y<16; $y++) { $Chars[$x][$y]=array($i,chr($i));$i++; }}// Теперь выводим накопленную информацию, используя идеологию// вставки участков кода в HTML-документ?> <table border=1 cellpadding=1 cellspacing=0><?for($y=0; $y<16; $y++) {?> <tr> <?for($x=0; $x<16; $x++) {?> <td> <?=$Chars[$x][$y][0]?>: <b><tt><?=$Chars[$x][$y][1]?></tt></b></td> <?}?> </tr><?}?></table>

ord
Возвращает ascii код символа.

Синтаксис :
int ord(string str)

Эта функция возвращает ASCII код первого символа строки str .
Например, ord(chr($n)) всегда равно $n - конечно, если $n заключено между нулем и 255.

Функции для работы с одиночными символами

chr
Возвращает один символ с определенным кодом.

Синтаксис :
string chr(int ascii)

Возвращает строку из одного символа с кодом $code . Эта функция полезна для вставки каких-либо непечатаемых символов в строку - например, кода нуля или символа прогона страницы, а также при работе с бинарными файлами.

<?// Сначало создаем массив того, что мы собираемся выводить,// не заботясь о форматировании (дизайне) информацииfor($i=0, $x=0; $x<16; $x++) { for($y=0; $y<16; $y++) { $Chars[$x][$y]=array($i,chr($i));$i++; }}// Теперь выводим накопленную информацию, используя идеологию// вставки участков кода в HTML-документ?> <table border=1 cellpadding=1 cellspacing=0><?for($y=0; $y<16; $y++) {?> <tr> <?for($x=0; $x<16; $x++) {?> <td> <?=$Chars[$x][$y][0]?>: <b><tt><?=$Chars[$x][$y][1]?></tt></b></td> <?}?> </tr><?}?></table>

ord
Возвращает ascii код символа.

Синтаксис :
int ord(string str)

Эта функция возвращает ASCII код первого символа строки str .
Например, ord(chr($n)) всегда равно $n - конечно, если $n заключено между нулем и 255.

Функции отрезания пробелов

trim
Удаляет из заданной строки начальные и конечные пробельные символы.

Синтаксис :
string trim(string str)

Возвращает копию str , только с удаленными ведущими и концевыми пробельными символами. Под пробельными символами надо понимать "\n", "\r", "\t", "\v", "\0" и пробел.
Например, вызов trim(" test\n ") вернет строку "test".

ltrim
Удаляет из заданной строки начальные пробельные символы.

Синтаксис :
string ltrim(string str)

То же, что и trim() , только удаляет исключительно начальные пробельные символы ("\n", "\r", "\t", "\v", "\0" и пробел), а концевые не трогает.

rtrim
Удаляет из заданной строки конечные пробельные символы.

Синтаксис :
string rtrim(string str)

То же, что и trim() , только удаляет исключительно конечные пробельные символы ("\n", "\r", "\t", "\v", "\0" и пробел), а начальные не трогает.
Эта функция - синоним chop() .

chop
Удаляет из заданной строки конечные пробельные символы.

Синтаксис :
string chop(string str)

Удаляет только концевые пробелы, начальные не трогает.

Поиск в тексте

strchr
Поиск первого вхождения символа в строку.

Синтаксис :
string strchr(string haystack, string needle)

Данная функция работает идеентично функции strstr() .

strstr
Поиск первого вхождения подстроки в строку.

Синтаксис :
string strstr(string haystack, string needle)

Функция strstr() возвращает участок строки, заданной в параметре haystack , начиная с первого фрагмента, указанного в параметре needle и до конца.
В случае неудачи возвращает false.
Данная функция чувствительна к регистру.
В случае, если needle не является строкой, то значение преобразуется в целое и используется как код искомого символа.

$email = "mailname@mail.ru";$domain = strstr($email, "@");// или$domain = strstr($email, ord("@"))echo $domain;// выведет @mail.ru

stristr
Нахождение первого вхождения подстроки, не учитывая регистр.

Синтаксис :
string stristr(string haystack, string needle)

Функция stristr() возвращает участок строки, заданной в параметре haystack , начиная с первого фрагмента, указанного в параметре needle и до конца.
В случае неудачи возвращает false.
Данная функция нечувствительна к регистру.
В случае, если needle не является строкой, то значение преобразуется в целое и используется как код искомого символа.

strrchr
Поиск последнего вхождения подстроки.

Синтаксис :
string strrchr(string haystack, string needle)

Функция strrchr() возвращает участок строки, заданной в параметре haystack , начиная с последнего фрагмента, указанного в параметре needle и до конца.
В случае неудачи возвращает false.
Данная функция чувствительна к регистру.
В случае, если needle не является строкой, то значение преобразуется в целое и используется как код искомого символа.

// получим последний каталог в $PATH$dir = substr(strrchr($PATH, ":"), 1);// а здесь получим все после последнего перевода строки$text = "text 1\nText2\nText3";echo substr(strrchr($text, 10), 1);

strpos
Находит позицию первого вхождения подстроки в заданной строке.

Синтаксис :
int strpos(string where, string what [, int fromwhere])

Функция strpos() пытается найти в строке were подстроку what и в случае успеха возвращает позицию (индекс) этой подстроки в строке. Первый символ строки имеет индекс 0. Необязательный параметр fromwhere можно задавать, если поиск нужно вести не с начало строки, а с какой-то другой позиции. В этом случае следует эту позицию передать в fromwhere . Если подстроку не удалось найти, функция возвращает false.
Если параметр what не строка, в этом случает его значение преобразуется в целое и используется как код искомого символа.

if(strpos($text, "a")===false) echo "Ненайдено!";// Проверка: три знака равенства

strrpos
Находит в заданной строке последнюю позицию, в которой находится заданный фрагмент.

Синтаксис :
int strrpos(string where, string what)

Данная функция ищет в строке where последнюю позицию, в которой встречался символ what (если what - строка из нескольких символов, то выявляется только первый из них, остальные не играют никакой роли).
Если искомый символ стоит первый в строке или его вообще нет, функция возвратит 0.
В случае, если искомый символ не найден, возвращает false.

substr_count
Находит количество вхождений фрагмента в строку.

Синтаксис :
int substr_count(string where, string what)

Функция substr_count() возвращает число фрагментов what , присутствующих в строке where .

echo substr_count("www.spravkaweb.ru", ".");// Выведет 3

strspn
Определяет присутствие начальных символов в строке.

Синтаксис :
int strspn(string str1, string str2)

Функция strspn() возвращает длину начального фрагмента строки str1 , состоящего полностью из символов, которые есть в строке str2 .

echo strspn("www.spravkaweb.ru", "abc");// Выведет 3

strcspn
Определяет отсутствие начальных символов в строке.

Синтаксис :
int strcspn(string str1, string str2)

Функция strspn() возвращает длину начального фрагмента строки str1 , состоящего полностью не из символов, которые есть в строке str2 .

Функции сравнения

strcmp
Сравнивает строки.

Синтаксис :
int strcmp(string str1, string str2)

Эта функция сравнивает две строки посимвольно (точнее, бобайтово) и возвращает:
0 - если строки полностью совпадают;
-1 - если строка str1 лексикографически меньше str2 ;
1 - если, наоборот, str1 "больше" str2 .
Так как сравнение идет побайтово, то регистр символов влияет на результаты сравнений.

strncmp
Сравнивает начала строк.

Синтаксис :
int strncmp(string str1, string str2, int len)

Эта функция отличается от strcmp() тем, что сравнивает не все слово целиком, а первые len байтов. В случае, если len меньше длины наименьшей из строк, то строки сравниваются целиком.
Эта функция сравнивает две строки посимвольно (точнее, бобайтово) и возвращает:
0 - если строки полностью совпадают;
-1 - если строка str1 лексикографически меньше str2 ;
1 - если, наоборот, str1 "больше" str2 .
Так как сравнение идет побайтово, то регистр символов влияет на результаты сравнений.

strcasecmp
Сравнивает строки без учета регистра.

Синтаксис :
int strcasecmp(string str1, string str2)

То же самое, что и strcmp() , только при работе не учитывается регистр букв.

$str1 = "Привет!";$str2 = "привет!";if(!strcesecmp($str1, $str2))echo "$str1 == $str2 при сравнении строк без учета регистра";

strncasecmp
Сравнивает начала строк без учета регистра.

Синтаксис :
int strncasecmp(string str1, string str2, int len)

Функция strncasecmp() является комбинацией функций strcasecmp() и strncmp() .

strnatcmp
Производит "естественное" сравнение строк.

Синтаксис :
int strnatcmp(string str1, string str2)

Данная функция имитирует сравнение строк, которое использовал бы человек.

$arr1 = $arr2 = array("img12.png", "img10.png", "img2.png", "img1.png");echo "Обычнаясортировка\n";usort($arr1, "strcmp");print_r($arr1);echo "\nЕстенственная сортировка\n";usort($arr2, "strnatcmp");print_r($arr2);

Данный скприпт выведет следующее:

Обычная сортировкаArray( [0] => img1.png [1] => img10.png [2] => img12.png[3] => img2.png) Естественная сортировкаArray( [0] => img1.png [1] => img2.png [2] => img10.png [3] => img12.png)

strnatcasecmp
Производит "естественное" сравнение строк без учета регистра.

Синтаксис :
int strnatcasecmp(string str1, string str2)

То же, что и strnatcmp() , только игнорирует регистр.

similar_text
Производит определение схожести двух строк.

Синтаксис :
int similar_text(string firsrt, string second [, double percent])

Функция similar_text() вычисляет схожесть двух строк по алгоритму, описанному Оливером (Oliver [1993]). Но вместо стека (как в псевдокоде Оливера) она использует рекурсивные вызовы.
Сложность алгоритма делает функцию медленной, и ее скорость пропорциональна (N^3), где N - длина наибольшей строки.
Функция возвращает число символов, совпавших в обеих строках. При передаче по ссылке третьего необязательного параметра в нем сохраняется процент совпадения строк.

levenshtein
Определение различия Левенштейна двух строк.

Синтаксис :
int levenshtein(string str1, string str2)
int levenshtein(string str1, string str2, int cost_ins, int cost_rep, int cost_del)
int levenshtein(string str1, string str2, function cost)

"Различие Левенштейна" - это минимальное чило символов, которое требовалось бы заменить, вставить или удалить для того, чтобы превратить строку str1 в str2 . Сложность алгоритма пропорциональна произведению длин строк str1 и str2 , что делает функцию более быстродействующей, чем similar_text() .

Первая форма функции возвращает число необходимых операций над символами строк для трансформации str1 в str2 .

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

Третий вариант позволяет указать функцию, используемую для расчета сложности трансформации. Функция cost вызывается со следующими аргументами:

· применяемая операция (вставить, изменить, удалить): "I*quot;, "R", "D";

· фактический символ первой строки

· фактический символ второй строки

· позиция строки 1

· позиция строки 2

· оставшаяся длина строки 1

· оставшаяся длина строки 2

Вызываемая функция должна будет возвратить стоимость этой операции.
Если длина одной из строк более 255 символов, функция levenshtein() возвращает -1, но такая длина более чем достаточна.

Форматирование и вывод строк

print
Выводит строку, значение переменной или выражение.

Синтаксис :
print(string arg)

Функция print() выводит аргумент arg , в качестве которого может быть переменная или выражение.

echo
Производит вывод одного или нескольких значений.

Синтаксис :
echo(string arg1, string [argn]...)

Функция echo() выводит значения перечисленных параметров.
echo() - фактически языковая конструкция, поэтому для нее не обязательны скобки, даже если используется несколько аргументов.

echo "Перенос на следующую строку,имеющийся в коде, сохраняетсяи используется при выводе"."чтобы избежать этого используйте"."оператор конкатенации";

printf
Вывод отформатированной строки.

Синтаксис :
int printf(string format [, mixed args, ...]);

Делает то же самое, что и sprintf() , только результирующая строка не возвращается, а направляется в браузер пользователя.

sprintf
Производит форматирование строки с подстановкой переменных.

Синтаксис : sprintf($format [,args, ...])

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

Строка форматирования $format может включать в себя команды форматирования, предваренные символом %. Все остальные символы копируются в выходную строку как есть. Каждый спецификатор формата (то есть, символ % и следующие за ним команды) соответствуют одному, и только одному параметру, указанному после параметра $format . Если же нужно поместить в текст % как обычный символ, необходимо его удвоить:

echo sprintf("The percentage was %d%%",$percentage);

Каждый спецификатор формата включает максимум пять элементов (в порядке их следования после символа %):

· Необязательный спецификатор размера поля, который указывает, сколько символов будет отведено под выводимую величину. В качестве символов-заполнителей (если значение имеет меньший размер, чем размер поля для его вывода) может использоваться пробел или 0, по умолчанию подставляется пробел. Можно задать любой другой символ-наполнитьел, если указать его в строке форматирования, предварив фпострофом.

· Опциональный спецификатор выравнивания, определяющий, будет результат выровнен по правому или по левому краю поля. По умолчанию производится выравнивание по правому краю, однако можно указать и левое выравнивание, задав символ - (минус).

· Необязательное число, определяющее размер поля для вывода величины. Если результат не будет в поле помещаться, то он &quo;вылезет" за края этого поля, но не будет усечен.

· Необязательное число, предваренное точкой ".", предписывающее, сколько знаков после запятой будет в результирующей строке. Этот спецификатор учитывается только в том случае, если происходит вывод числа с плавающей точкой, в противном случае он игнорируется.

· Наконец, обязательный (заметьте - единственный обязательный!) спецификатор типа величины, которая будет помещена в выходную строку:

· b - очередной аргумент из списка выводится как двоичное целое число

· c - выводится символ с указанным в аргументе кодом

· d - целое число

· f - число с плавающей точкой

· o - восьмеричное целое число

· s - строка символов

· x - шестнадцатиричное целое число с маленькими буквами a-z

· X - шестнадцатиричное целое число с большими буквами A-Z

Вот как можно указать точность представления чисел с плавающей точкой:

$money1 = 68.75;$money2 = 54.35;$money = $money1 + $money2;// echo $money выведет "123.1"...$formatted = sprintf ("%01.2f", $money);// echo $formatted выведет "123.10"!

Вот пример вывода целого числа, предваренного нужным количеством нулей:

$isodate=sprintf("%04d-%02d-%02d",$year,$month,$day);

sscanf
Производит интерпретацию строки согласно формату и занесение значений в переменные.

Синтаксис :
mixed sscanf(string str, string format [, string var1 ...])

Функция sscanf() является противоположностью функции printf() . Она интерпретирует строку str согласно формату format , аналогично спецификации printf() . При указании только двух аргументов полученные значения возращаются в массиве.

// получение серийного номера$serial = sscanf("SN/235-0001", "SN/%3d-%4d");echo $serial[0]*10000+$serial[1]; // выводит: 2350001// и даты изготовления$date = "January 01 2000";list($month, $day, $year) = sscanf($date, "%s %d %d");echo "Дата: $year-".substr($month,0,3)."-$day\n";// выводит: 2000-Jan-01

При указании дополнительных необязательных параметров (их следует передавать по ссылке) функция возвращает их число. Те переменные, которые не получают значений, в возвращаемом значении не учитываются.

// гененируем XML записть из строки$auth = "765\tLewis Carroll";$n = sscan($auth,"%d\t%s %s", &$id, &$first, &$last);echo "<author id="$id"> <firstname>$first</firrstname> <surname>$last</surname></author>\n";

Составление/разбиение строк

substr
Возвращает участок строки с определенной длиной.

Синтаксис :
string substr(string str, int start [,int length])

Возвращает участок строки str , начиная с позиции start и длиной length . Если length не задана, то подразумевается подстрока от start до конца строки str . Если start больше, чем длина строки, или же значение length равно нулю, то возвращается пустая подстрока.

Однако эта функция может делать и еще довольно полезные вещи. К примеру, если мы передадим в start отрицательное число, то будет считаться, что это число является индексом подстроки, но только отсчитываемым от конца str (например, -1 означает "начинается с последнего символа строки").
Параметр length , если он задан, тоже может быть отрицательным. В этом случае последним символом возвращаемой подстроки будет символ из str с индексом length , определяемым от конца строки.

$str = substr("abcdef", 1); // возвратит "bcdef"$str = substr("abcdef", 1, 3); // возвратит "bcd"$str = substr("abcdef", -1); // возвратит "f"$str = substr("abcdef", -2); // возвратит "ef"$str = substr("abcdef", -3, 1); // возвратит "d"$str = substr("abcdef", 1, -1); // возвратит "bcde"

str_repeat
Повторяет строку определенное количество раз.

Синтаксис :
string str_repeat(string str, int number)

Функция "повторяет" строку str number раз и возвращает объединенный результат.

echo str_repeat("test!",3); // выводит test!test!test!

str_pad
Дополняет строку другой строкой до определенной длины.

Синтаксис :
string str_pad(string input, int pad_length [, string pad_string [, int pad_type]])

Аргументinput задаетисходнуюстроку. Аргумент pad_length задает длину возвращаемой строки. Если он имеет значение меньше, чем исходная строка, то никакого добавления не производится.
При помощи необязательного аргумента pad_string можно указать, какую строку использовать в качестве заполнителя (по умолчанию - пробелы).
При помощи необязательного аргумента pad_type можно указать, с какой стороны следует дополнять строку: справо, слево или с обеих сторон.
Этот аргумент может принимать следующие значения:

· STR_PAD_RIGHT (по умолчанию)

· STR_PAD_LEFT

· STR_PAD_BOTH

$str = "Aaaaa";echo str_pad($str, 10);// возвратит "Aaaaa"echo str_pad($str, 10, "-=", STR_PAD_LEFT);// возвратит "-=-=-Aaaaa"echo str_pad($str, 10, "_", STR_PAD_BOTH)// возвратит "_Aaaa_"

chunk_split
Возвращает фрагмент строки.

Синтаксис :
string chunk_split(string str [, int chunklen [, string end]])

Функция chunk_split() возвращает строку, в которой между каждым блоком строки str длиной chunklen (по умолчанию 76) вставляется последовательность разделителей end (по умолчанию: "\r\n").
Данная функция может быть полезна при конвертировании в формат "base64" для соответствия правилам RFC 2045.

// отформатируем $data, используя семантику RFC 2045$str = chunk_split(base64_encode($data));

Эта функция работает значительно быстрее, чем ereg_replace() .

strtok
Возвращает строку по частям.

Синтаксис :
string strtok(string arg1, string arg2)

Фунция возвращает часть строки arg1 до разделителя arg2 . При последующих вызовах возвращается следующая часть до следующего разделителя, и так до конца строки. При первом вызове функция принимате два аргумента: исходную строку arg1 и разделитель arg2 . При каждом последующем вызове аргумент arg1 указываеть не надо, иначе будет возвращаться первая часть строки. Когда возвращать больше нечего, функция вернет false. Если часть строки состоит из 0 или из пустой строки, то функция также вернет false.

$str="This is an example№string№ Aaa";$tok = strtok($str, " ");while($tok) { echo "$tok"; $tok = strtok(" №");};// выведет: "This" "is" "an" "example" "string"

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

explode
Производит разделение строки в массив.

Синтаксис :
array explode(string seperator, string str [, int limit])

Функция explode() возвращает массив строк, каждая из которых соответствует фрагменту исходной строки str , находящемуся между разделителями, указанными аргументом separator .
Необязательный параметр limit указывает максимальное количество элементов в массиве. Оставшаяся неразделенная часть будет содержаться в последнем элементе.

$str = "Path1 Path2 Path3 Path4";$str_exp = explode(" ", $str);// теперь $str_exp = array([0] => Path1, [1] => Path2,// [2] => Path3, [3] => '', [4] => Path4)

implode
Производит объединение массива в строку.

Синтаксис :
string implode(string glue, array pieces)

Функция implode() возвращает строку, которая содержит последовательно все элементы массива, заданного в параметре pieces , между которыми вставляется значение, указанное в параметре glue .

$str = implode(":", $arr);

join
Производит объединение массива в строку.

Синтаксис :
string join(string glue, array pieces)

Тоже, чтоиimplode() .

Работа с блоками текста

str_replace
Заменяет в исходной строке одни подстроки на другие.

Синтаксис :
string str_replace(string from, string to, string str)

Эта функция заменяет в строке str все вхождения подстроки from (с учетом регистра) на to и возвращает результат. Исходная строка, переданная третьим параметром, при этом не меняется.
также эта функиция может работать с двоичными строками.

substr_replace
Заменяет в исходной строке одни подстроки на другие.

Синтаксис :
string substr_replace(string str, string replacement, int start [, int lemgth])

Эта функция возвращает строку str , в которой часть от символа с позицией start и длиной length (или до конца, если аргумент длины не указан) заменяется строкой replacement .

Если значение start положительно, отсчет производится от начала строки str , иначе - от конца (-1 - последний символ строки).

Если значение length неотрицательно, тогда оно указывает длину заменяемого фрагмента. Если оно отрицательно, то это число символов от конца строки str до последнего символа заменяемого фрагмента (со знаком минус).

wordwrap
Разбивает исходный текст на строки с определенными завершающими символами.

Синтаксис :
string wordwrap(string str [, int width [, string break [, int cut]]])

Эта функция разбивает блок текста str на несколько строк, завершаемых символами break , так, чтобы на одной строке было не более width букв. Разбиение происходит по границе слова, так что текст остается читаемым.

strtr
Комплексная замена в строке.

Синтаксис :
string strtr(string str, string from, string to)
string strtr(string str, array from)

В первом случае функция strtr() возвращает строку str , у которой каждый символ, присутствующий в строку from , заменяется на корреспондирующий из строки to . В случае, если строки from и to различной длины, то лишние конечные символы длинной строки игнорируются.

Во втором случае функция strtr() возвращает строку, в которой фрагменты строки str заменяются на соответствующие индексам значения элементов массива from . При этом функция пытается заменить сначало наибольшие фрагменты исходной строки и не выполняет замену в уже модифицированных частях строки. Таким бразом, теперь мы можем выполнить несколько замен сразу:

$Subs = array("<name>" => "Larry", "<time>" => date("d.m.Y"));$st="Привет, <name>! Сейчас <time";echo strtr($st,$Subs);

А вот как можно "отменить" действие функции HtmlSpecialChars() :

$Trans=array_flip(get_html_translation_table());$st=strtr($st, $Trans);

В результате мы из строки, в которой все спецсимволы заменены на их HTML-эквиваленты, получим исходную строку.

stripslashes
Удаление обратных слешей.

Синтаксис :
string stripslashes(string str);

Заменяет в строке str некоторые предваренные слешем символы на их однокодовые эквиваленты. Это относится к следующим символам: ", ", \.

stripcslashes
Преобразование специальных символов в их двоичное представление.

Синтаксис :
string stripcslashes(string str);

Возвращает строку, в которой те специальные символы, которые закомментированы (для визуального отображения) обратным слешем, преобразуются в их естественное двоичное представление. Распознаются C-подобные записи, например: \n, \r ..., восьмеричные и шестнадцатеричные последовательности.

addslashes
Добавление слешей перед специальными символами строки.

Синтаксис :
string addslashes(string str);

Вставляет слеши только перед следующими символами:", " и \. Функцию очень удобно использовать при вызове eval() .

addcslashes
Форматирование строки слешами в С-представление.

Синтаксис :
string addcslashes(string str, string charlist);

Функция addcslashes() возвращает строку str , в которую вставлены символы обратного слеша "\" перед перечисленными в строке-списке charlist символами. Это позволяет преобразовать непечатные символы в их визуальное С-представление.

quotemeta
Цитирование метасимволов.

Синтаксис :
string quotemeta(string str);

Возвращает строку, в которую добавлены обратные слеши "\" перед каждым из следующих символов:
. \\ + * ? [ ^ ] ( $ )

Может использоваться для подготовки шаблонов в регулярных выражениях.

strrev
Производит реверс строки.

Синтаксис :
string strrev(string str)

функция strrev() возвращает строку str "задом наперед".

Функции для преобразования символов

nl2br
Заменяет символы перевода строки.

Синтаксис :
string nl2br(string string)

Заменяет в строке все символы новой строки \n на <br>\n и возвращает результат. Исходная строка не изменяется. Обратите внимание на то, что символы \r , которые присутствуют в конце строки текстовых файлов Windows, этой функцией никак не учитываются, а потому остаются на старом месте.

strip_tags
Удаляет из строки теги.

Синтаксис :
string strip_tags(string str [, string allowable_tags])

Эта функция удаляет из строки все HTML- и PHP-теги и возвращает результат.
Незавершенные или фиктивные теги вызывают ошибку.
В параметре allowable_tags можно передать теги, которые не следует удалять из строки. Они должны перечисляться вплотную друг к другу.

$st="<b>Жирный текст</b><tt>Моноширный текст</tt><a href=http://spravkaweb.ru>Ссылка</a>";echo "Исходный текст: $st";echo "<hr>После удаления тегов: ".striptags($st,"<a><b>"). "<hr>";

Запустив этот пример, мы сможем заметить, что теги <a> и <b> не были удалены (ровно как и их парные закрывающие), в то время как <tt> исчез.

get_meta_tags
Функция ищет и обрабатывает все теги <META>.

Синтаксис :
array get_meta_tags(string filename, int use_include_path)

Функция открывает файл и ищет в нем все теги <META> до тех пор, пока не встретится закрывающий тег </head>.
Если очередной тег <META> имеет вид:
<meta name="название" content="содержимое">
то пара название=>содержимое добавляется в результирующий массив, который под конец и возвращается.
Спецсимволы в значении атрибута filename заменяются на знак подчеркивания "_", а алфавитные символы преобразуются в нижний регистр.
Функция удобно использовать для быстрого получения всех метатегов из указанного файла.
Если необязательный параметр use_include_path установлен, то поиск файла осуществляется не только в текщем каталоге, но и во всех тех, которые назначены для поиска инструкциями include и require .

get_html_translation_table
Функция возвращает таблицу трансляции, которая используется функциями htmlspecialchars() и htmlentities().

Синтаксис :
string get_html_translation_table(int table [, int quote_style])

В этой функции аргумент table указывает, какую таблицу трансляции необходимо получить: HTML_SPECIALCHARS для функции htmlspecialchars() или HTML_ENTITIES для функции htmlentities() . Описание необязательного параметра quote_style приведено в функции htmlspecialchars() .

$trans = get_html_translation_table(HTML_ENTITIES);$str = "<A & B>";$encoded = strtr($str, $strans);// $encoded = "&amplt; A &amp; B &gt;"

Иногда удобно использовать функцию array_flip() для изменения направления транслитерации.

$trans = array_flip($trans);$original = strtr($encoded, $trans);

htmlspecialchars
Производит преобразование спецсимволов в HTML-представление.


Синтаксис :
string HtmlSpecialChars(string str [, int quote_style]);

Основное назначение этой функции - гарантировать, что в выводимой строке ни один участок не будет воспринят как тэг.
Заменяет в строке некоторые символы (такие как амперсанд, кавычки и знаки "больше" и "меньше") на их HTML-эквиваленты,так, чтобы они выглядели на странице "самими собой". Самое типичное применение этой функции - формирование параметра value в различных элементах формы, чтобы не было никаких проблем с кавычками, или же вывод сообщения в гостевой книге, если вставлять теги пользователю запрещено. При помощи необязательного атрибута quote_style можно указать, что делать с кавычками:

· ENT_COMPAT (по умолчанию) - разрешить трансляцию только двойных кавычек

· ENT_QUOTES - разрешить трансляцию любых кавычек

· ENT_NOQUOTES - запретить трансляцию любых кавычек

$str = htmlspecialchars("<a href=index.php>Главная</a>", ENT_QUOTES);

htmlentities
Производит конвертацию символов, имеющих HTML-представление.


Синтаксис :
string htmlentities(string str [, int quote_style]);

Эта функция похожа на htmlspecialchars() , но только в ней производиться не выборочная трансляция, а полная - для всех символов, которые могут иметь эквивалентные HTML-представления.
При помощи необязательного атрибута quote_style можно указать, что делать с кавычками:

· ENT_COMPAT (по умолчанию) - разрешить трансляцию только двойных кавычек

· ENT_QUOTES - разрешить трансляцию любых кавычек

· ENT_NOQUOTES - запретить трансляцию любых кавычек

hebrev
Конвертация логического текста Hebrew в отображаемый.

Синтаксис :
string hebrev(string hebrew_text [, int max_chars_per_line]);

Необязательный аргумент max_chars_per_line указывает число символов на строку вывода. Функция пытается избежать разрыва слова.

hebrevc
Аналог функции hebrev с расстоновкой переносов.

Синтаксис :
string hebrevc(string hebrew_text [, int max_chars_per_line]);

Функция hebrevc() сходна с hebrev() с тем отличием, что она преобразует символы перевода строк "\n" в "<br>\n". необязательный аргумент max_chars_per_line указывает число символов на строку вывода. Функция пытается избежать разрыва слов.

quoted_printable_decode
Преобразование цитированной строки в 8-битную.

Синтаксис :
string quoted_printable_decode(string str);

Функции изменения регистра

strtolower
Производит преобразование символов строки в нижний регистр.

Синтаксис :
string strtolower(string str);

Преобразует строку в нижний регистр. Возвращает результат перевода.
Надо заметить, что при неправильной настройке локали функция будет выдавать, мягко говоря, странные результаты при работе с буквами кириллицы.

$str = "HeLLo World";$str = strtolower($str);echo $str;// выведет hello world

strtoupper
Производит преобразование заданной строки в верхний регистр.

Синтаксис :
string strtoupper(string str);

Переводит строку в верхний регистр. Возвращает результат преобразования. Эта функция хорошо работает с английскими буквами, но с русскими может чудить.

$str = "Hello World";$str = strtoupper($str);echo $str;// выведет HELLO WORLD

ucfirst
Производит преобразование первого символа строки в верхний регистр.

Синтаксис :
string ucfirst(string str);

Возвращает строку, у которой первый символ заглавный.
Символы кириллицы могут быть неправильно конвертированы.

$str = "hello world";$str = ucfirst($str);echo $str;// выведет Hello world

ucwords
Производит преобразование первого символа каждого слова строки в верхний регистр.

Синтаксис :
string ucwords(string str);

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

$str = "hello world";$str = ucfirst($str);echo $str;// выведет Hello World

Установка локали (локальных настроек)

setlocale
Установка региональных настроек.

Синтаксис :
string SetLocale(string category, string locale);

Функция setlocale устанавливает текущую локаль, с которой будут работать функции преобразования регистра символов, вывода даты-времени и т.д. Вообще говоря, для каждой категории функций локаль определяется отдельно и выглядит по-разному. То, какую именно категорию функций затронет вызов setlocale() , задается в параметре category . Он может принимать следующие строкрвые значения:

·LC_CTYPE - активизирует указанную локаль для функций перевода в верхний/нижний регистры;

·LC_NUMERIC - активизирует локаль для функций форматирования дробных чисел - а именно, задает разделитель целой и дробной части в числах;

·LC_TIME - задает формат вывода даты и времени по умолчанию;

·LC_ALL - устанавливает все вышеперечисленные режимы.

Теперь поговорим о параметре locale . Как известно, каждая локаль, установленная в системе, имеет свое уникальное имя, по которому к ней можно обратиться. Именно оно и фиксируется в этом параметре. Однако, есть два важных исключения из этого правила. Во-первых, если величина locale равна пустой строке "", то устанавливается та локаль, которая указана в глобальной переменной окружения с именем, совпадающем с именем категории category (или LANG - она практически всегда присутствует в Unix). Во-вторых, если в этом параметре передается 0, то новая локаль не устанавливается, а просто возвращается имя текущей локали для указанного режима.

setlocale("LC_CTYPE","ru_SU.KOI*-R");// Здесь вызов устанавливает таблицу замены// регистра букв в соответствии с кодировкой KOI8-R.

Преобразование кодировок

convert_cyr_string
Преобразует строку из одной кодировки кириллицы в другую.

Синтаксис :
string convert_cyr_string(string str, string from, string to);

Функцияпереводитстрокуstr изкодировкиfrom вкодировкуto . Конечно, это имеет смысл только для строк, содержащих "русские" буквы, т.к. латиница во всех кодировках выглядит одинаково. Разумеется, кодировка from должна совпадать с истинной кодировкой строки, иначе результат получится неверным. Значения from и to - одиночный символ, определяющий кодировку:

· k - koi8-r

· w - windows-1251

· i - iso8859-5

· a - x-cp866

· d - x-cp866

· m - x-mac-cyrillic

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

bin2hex
Производит преобразование символьных данных в шестнадцатеричный вид.

Синтаксис :
string bin2hex(string str)

Функция bin2hex() возвращает стороковое шестнадцатеричное представление символьно-байтовых данных, содержащихся в строке str . Конвертация производиться побайтово, старший полубайт указывается первым.

Функции форматных преобразований

parse_url
Обрабатывает URL и возвращает его компоненты.

Синтаксис :
array parse_url(string url);

Эта функция возвращает ассоциативный массив, включающий множество различных существующих компонентов URL. Онивключают "scheme", "host", "port", "user", "pass", "path", "query" и "fragment".

parse_str
Заносит строки URL в переменные.

Синтаксис :
void parse_str(string str [, array arr]);

Функция parse_str() интерпретирует строку str , как если бы эта строка содержала в себе переменные и их значения и передавалась бы в URL. Наша функция устанавливает для этих переменных значения.
Если задан второй необязательный параметр, то значения, найденные при помощи функции parse_str() , сохраняться не в глобальных переменных, а в элементах указанного массива.

$str = "name[]=Vasia&name[]=Pupkin&id=12645&mail=vasia@mail.ru&url=www.vasia.ru";parse_str($str);parse_str($str, $arr);echo $id; // выведет 1264echo $name[0]; // выведет Vasiaecho $name[1]; // выведет Pupkinprint_r($arr);// выведетArray( [name] => Array ( [0] => Vasia [1] => Pupkin ) [id] => 12645 [mail] => vasia@mail.ru [url] => www.vasia.ru)

rawurlencode
Кодирование URL.


Синтаксис :
string RawUrlEncode(string str);

Функция RawUrlEncode() возвращает строку, в которой все не алфавитно-цифровые символы (за исключением дефиса "-", знака подчеркивания "_" и точки ".") заменены последовательностями: знак процента (%), за которым следуют две шестнадцатеричные цифры, которые обозначают код символа. Это кодирование нужно для того, чтобы буквенные символы не обрабатывались в качестве разделителей строки URL и не искажались при передаче в сетях.

echo "<A href=ftp://user:".rawurlencode($mypasswd)."@ftp.my.com/x.txt>"; // передача пароля в гиперссылке

rawurldecode
Производит декодирование URL.


Синтаксис :
string rawurldecode(string str);

Эта функция возвращает строку, в которой последовательности с знаком процента (%) и следующими за ним двумя шестнадцатеричных цисла преобразует в симолы, соответствующими этому коду. Аналогична urldecode() , но не воспринимает + как пробел.

$str="foo%20bar%40baz";echo rawurldecode($str);// выведет foo bar@baz

base64_encode
Кодирует данные в кодировке MIME base64.

Синтаксис :
string base64_encode(string data);

base64_encode() возвращает data закодированные в кодировке base64. Эта кодировка разработана для того, чтобы передовать двоичные данные через транспортные слои, которые не содержат восьмой бит, такие как почтовые тела. Данные в кодировке Base64 занимают примерно на 33% больше места, чем оригинал.

base64_decode
Декодирует данные, закодированные в кодировке MIME base64.

Синтаксис :
string base64_decode(string encoded_data);

base64_decode() декодирует encoded_data и возвращает оригинал данных. Возвращаемые данные могут быть двоичными.

Функции URL

number_format
Форматирование числа.

Синтаксис :
number_format($number, $decimals, $dec_point=".", $thousands_sep=",");

Эта функция форматирует число с плавающей точкой с разделением его на триады с указанной точностью. Она может быть вызвана с двумя или четырьмя аргументами, но не с тремя! Параметр $decimals задает, сколько цифр после запятой должно быть у числа в выходной строке. Параметр $dec_point представляет собой разделитель целой и дробной частей, а параметр $thousands_sep - разделитель триад в числе (если указать на его месте пустую строку, то триады не отделяются друг от друга).

Работа с бинарными данными

pack
Пакетирование данных в двоичную строку.

Синтаксис :
string pack(string format [,mixed $args, ...]);

Функция pack() упаковывает заданные аргументы в бинарную строку, которая затем и возвращается. Формат параметров, а также их количество, задается при помощи строки $format , которая представляет собой набор однобуквенных спецификаторов форматирования - наподобие тех, которые указываются в sprintf() , но только без знака %. После каждого спецификатора может стоять число, которое отмечает, сколько информации будет обработано данным спецификатором. А именно, для форматов a,A,h и H число задает, какое количество символов будет помещено в бинарную строку из тех, что находится в очередном параметре-строке при вызове функции (то есть, определяет размер поля для вывода строки). В случае @ оно определяет абсолютную позицию, в которую будут помещены следующие данные. Для всех остальных спецификаторов следующие за ними числа задают количество аргументов, на которые распространяется действие данного формата. Вместо числа можно указать *, в этом случае подразумевается, что спецификатор действует на все оставшиеся данные.

Вот полный список спецификаторов формата:

· a - строка, свободные места в поле заполняются символом с кодом 0;

· A - строка, свободные места заполняются пробелами;

· h - шестнадцатиричная строка, младшие разряды в начале;

· H - шестнадцатиричная строка, старшие разряды в начале;

· c - знаковый байт (символ);

· C - беззнаковый байт;

· s - знаковое короткое целое (16 битовб порядок байтов определяется архитектурой процессора);

· S - беззнаковое короткое число;

· n - беззнаковое целое (16 битов, старшие разряды в конце);

· v - беззнаковое целое (16 битов, младшие разряды в конце);

· i - знаковое целое (размер и порядок байтов определяется архитектурой);

· I - беззнаковое целое;

· l - знаковое длинное целое (32 бита, порядок знаков определяется архитектурой);

· L - беззнаковое длинное целое;

· N - беззнаковое длинное целое (32 бита, старшие разряды в конце);

· V - беззнаковое целое (32 бита, младшие разряды в конце);

· f - число с плавающей точкой (зависит от архитектуры);

· d - число с плавающей точкой двойной точности (зависит от архитектуры);

· x - символ с нулевым кодом;

· X - возврат назад на 1 байт;

· @ - заполнение нулевым кодом до заданной абсолютной позиции.

// Целое, целое, все остальное - сиволы$bindata = pack("nvc*", 0x1234, 0x5678, 65, 66);

После выполнения приведенного кода в строке $bindata будет содержаться 6 байтов в такой последовательности:
0x12, 0x34, 0x78, 0x56, 0x41, 0x42 (в шестнадцатиричной системе счисления).

unpack
Распаковывает данные из двоичной строки.

Синтаксис :
array unpack(string format, string data);

Распаковывает данные из двоичной строки в массив согласно формату. Возвращает массив, содержащий распакованные элементы.

$array = unpack("c2chars/nint", $binarydata);

Возникающий в результате массив будет содержать "chars1", "chars2" и "int".

Строковые суммы и хеш-функции

strlen
Возвращает длину строки.

Синтаксис :
int strlen(string str)

Возвращает просто длину строки, т.е., сколько символов содержится в str .
Строка может содержать любые символы, в том числе и с нулевым кодом. Функция strlen() будет правильно работать и с такими строками.

count_chars
Возвращает информацию о символах строки.

Синтаксис :
mixed count_chars(string str [, int mode])

Функция count_chars() подсчитывает частоту встречаемости каждого байта (0-255) в строке str и возвращает в массиве результат согласно необязательному аргументу mode . mode может принимать следующие значения:

· 0 (по умолчанию)- массив с байтами в качестве индексов и частотой повторения в качестве значений элемента массива

· 1 - похож на 0, но отсутствующие в строке str байты не возвращаются

· 2 - похож на 0, но возвращаются только те байты, которые отсутствуют

· 3 - возвращается строка, состоящая из всех обнаруженных символов

· 4 - возвращается строка, состоящая из всех отсутствующих символов

md5
Получение строки-хеша MD5.


Синтаксис :
string md5(string str);

Возвращает хеш-код строки str , основанный на алгоритме корпорации RSA Data Security под названием "MD5 Message-Digest Algorithm". Хеш-код - это просто строка, практически уникальная для каждой из строк str . То есть вероятность того, что две разные строки, переданные в str , дадут нам одинаковый хеш-код, стремиться к нулю.
В то же время, если длина строки str может достигать нескольких тысяч символов, то ее MD5-код занимает максимум 32 символа.

crc32
Получение полиминала строки crc32.


Синтаксис :
int crc32(string str);

Функция crc32() вычисляет 32-битную контрольную сумму строки str . То есть, результат ее работы - 32-битное (4-байтовое) целое число.
Обычно эту функцию используют для проверки целостности переданных данных.
Эта функция работает гораздо быстрее md5() , но в то же время выдает гораздо менее надежные "хеш-коды" для строки. Так что, теперь, чтобы получить методом случайного подбора для двух разных строк одинаковые "хеш-коды", вам потребуется не триллион лет работы самого мощного компьютера, а всег лишь год-другой.

crypt
Производит симметричное шифрование.


Синтаксис :
string crypt(string str [,string salt]);

В аргументе str задается строка, которую надо зашифровать.
Хеш-код для одной и той же строки, но с различными значениями salt (Кстати, это должна быть обязательно двухсимвольная строка) дает разные результаты. Если параметр salt пропущен, PHP сгенерирует его случайным образом.
В системах, которые поддерживают несколько алгоритмов шифрования, следующие константы устанавливаются равными 1 или 0, в зависимости от того, поддерживается ли данный алгоритм или нет:

· CRYPT_STD_DES - стандартное 2-байтовое DES-шифрование (SALT=2)

· CRYPT_EXT_DES - расширенное 9-байтовое DES-шифрование (SALT=9)

· CRYPT_MD5 - 12-байтовое MD5-шифрование (SALT начинается с $1$)

· CRYPT_BLOWFISH - расширенное 12-байтовое DES-шифрование (SALT начинается с $2$)

Т.к. данная функция использует односторонний алгоритм шифрования, то функции дешифрования не имеется.

metaphone
Производит вычисление метафон-хеша.


Синтаксис :
string metaphone(string str);

Данная функция схожа по действию с soundex() , вычисляет код произношения слова, переданного в строке str , но с повышенной точностью вычисления, т.к. использует правила произношения английского языка.
Возвращаемое строковое значение может быть переменной длины.

soundex
Вычисления хеша сходности произношения.


Синтаксис :
string soundex(string str);

Функция soundex() используется для проверки правописания, когда приблизительно известно как звучит слово, но не известно, как оно пишется, и имеется словарь (база данных), относительно которого можно осуществить проверку.
Возвращается строка из 4 символов: первая буква слова и 3 цифры.

soundex("Euler") == soundex("Ellery") == "E460";soundex("Gauss") == soundex("Ghosh") == "G200";soundex("Hilbert") == soundex("Heilbronn") == "H416";soundex("Knuth") == soundex("Kant") == "K530";soundex("Lloyd") == soundex("Ladd") == "L300";soundex("Lukasiewicz") == soundex("Lissajous") == "L222";

Символические ссылки. Жесткие ссылки

Немного теории

В системах Unix довольно часто возникает необходимость иметь для одного и того же файла или каталога разные имена. При этом одно из имен логично назвать основным, а все другие - его псевдонимами. В терминологии Unix такие всевдонимы называются символическими ссылками .

Символическая ссылка - это просто бинарный файл специального вида, который содержит ссылку на основной файл. При обращении к такому файлу (например, открытию его на чтение) система "соображает", к какому объекту на самом деле запрашивается доступ, и прозрачно его обеспечивает. Это означает, что мы можем использовать символические ссылки точно так же, как и обычные файлы. Однака иногда нужно бывает работать со ссылкой именно как со ссылкой, а не как с файлом. Для этого и существуют перечисленные ниже функции PHP.

Жесткие ссылки

Создание символической ссылки - не единственный способ задать для одного файла несколько имен. Главный недостаток символических ссылок - существование основного имени файла, на которое все и ссылаются. Попробуйте удалить этот файл - и вся "паутина" ссылок, если таковая имелась, развалиться на куски. Есть и другой недостаток: открытие файла, на который указывает ссылка, происходит несколько медленнее, т.к. системе нужно проанализировать содержимое ссылки и установить связь с "настоящим" файлом. Особенно это чувствуется, если одна ссылка указывает на другую, а та на третью и т.д. уровней на 10.

Жесткие ссылки позволяют вам иметь для одного файла несколько совершенно равноправных имен, причем доступ по ним осуществляется одинаково быстро. При этом, если одно из таких имен будет удалено, то сам файл удалиться только в том случае, если данное имя было последним, и других имен у файла нет.

Зарегестрировать новое имя у файла (то есть создать для него жесткую ссылку) можно с помощью функции link() . Ее синтаксис полностью идеентичен функции symlink() , да и работает она по тем же правилам, за исключением того, что создает не символическую, а жесткую ссылку.

readlink
Возвращает имя основного файла.

Синтаксис :
string readlink(string $linkname)

Возвращает имя основного файла, с которым связан его синоним $linkname . Это бывает полезно, если вы хотите узнать основное имя файла, чтобы, например, удалить сам файл, а не ссылку на него. В случае ошибки функция возвращает значение "ложь".

symlink
Создает символическую ссылку.

Синтаксис :
bool symlink(string $target, string $link)

Эта функция создает символическую ссылку с именем $link на объект (файл или каталог), заданную в $target . В случае "провала" функция возвращает false.

lstat
Функция собирает вместе всю информацию, выдаваемую операционной системой для указанной ссылки, и возвращает ее в виде массива.

Синтаксис :
array lstat(string $filename)

Функция полностью аналогична вызову stat() , за исключением того, что если $filename задает не файл, а символическую ссылку, будет возвращена информация именно об этой ссылке (а не о файле, на который она указывает, как это делает stat() ).

linkinfo
Функция возвращает значение поля "устройство" из результата, выдаваемого функцией lstat() .

Синтаксис :
int linkinfo(string $linkname)

Ее обычно задействуют, если хотят определить, существует ли еще объект, на который указывает символическая ссылка в $linkname .

Функции даты и времени

checkdate
Проверяет правильность даты/времени.

Синтаксис :
int checkdate(int month, int day, int year);

Функция checkdate() проверяет правильность даты, заданной в ее аргументах.
Возвращает true если дата, указанная как "month, day, year" (месяц, число, год), правильна, иначе false. Дата считается правильной, если:
- год между 1 и 32767 включительно
- месяц между 1 и 12 включительно
- день находится в диапазоне разрешенных дней данного месяца. Високосныегодыучитываются.

$month=1;$day=10;$year=2002;if(checkdate($month,$day,$year)) echo "Такойденьесть!";else echo "Такого дня нет!";

Выведет: Такой день есть!

$month=13;$day=10;$year=2002;if(checkdate($month,$day,$year)) echo "Такойденьесть!";else echo "Такого дня нет!";

Выведет: Такого дня нет!

date
Формат локального времени/даты.

Синтаксис :
string date(string format [, int timestamp]);

Эта функция возвращает строку, содержащую дату и время, отформатированную согласно строке format и используя временную метку timestamp или текущее локальное время, если не задана временная метка.

В фоматной строке должны использоваться следующие символы:

· a - "до" и "после" полудня: "am" или "pm"

· A - "До" и "После" полудня: "AM" или "PM"

· d - день месяца, 2 цифры (на первом месте ноль) (от 01 до 31)

· D - день недели, текстовый, 3 буквы; т.е. "Fri"

· j - день месяца, 1-2 цифры без начальных нулей (от 1 до 31)

· F - месяц, текстовый, длинный; т.е. "January"

· h - час, 12-часовой формат (от 01 до 12)

· H - час, 24-часовой формат (от 00 до 23)

· g - час, 12-часовой формат без нулей (от 1 до 12)

· G - час, 24-часовой формат без нулей (от 0 до 23)

· i - минуты (от 00 до 59)

· I(большая i) - 1, если действует переход на летнее время, иначе 0

· L - 0, если год не високосный, или 1 в противном случае

· B - Swatch Internet time

· T - временная зона компьютера, например: MDT (доступна не всегда)

· l (строчная "L") - день недели, текстовый, длинный; т.е. "Friday"

· m - месяц, две цифры с нулями (от 01 до 12)

· n - месяц, одна-две цифры без нулей (от 1 до 12)

· M - трехбуквенное английское сокращение месяца; т.е. "Jan"

· t - число дней в указанном месяце (от 28 до 31)

· s - секунды (от 0 до 59)

· S - англоязычный порядковый суффикс числа из двух букв, текстовый, т.е. "th", "nd"

· U - целое число секунд, прошедших с момента начала эпохи UNIX (доступно не всегда)

· Y - год, цифровой, 4 цифры (1999)

· y - год, цифровой, 2 цифры (99)

· w - порядковое число дня в неделе,(от 0-воскресенье до 6-суббота)

· z - порядковое число дня в году (от 0 до 365)

· Z - смешение временной зоны в секунадах (от -43200 до 43200)

Все остальные символы в строковом аргументе format возвращаются в результирующей строке "как есть".
Формат "Z" всегда возвращает 0 при использовании с функцией gmdate().

echo date("Сегодня d.m.Y");//Сегодня 31.01.2002echo date( "l dS of F Y h:i:s A" );// Thursday 31st of January 2002 12:51:19 PMecho "July 1, 2000 is on a " . date("l", mktime(0,0,0,7,1,2000));// July 1, 2000 is on a Saturday

Функции date() и mktime() возможно использовать вместе для того, чтобы найти даты в будущем или прошлом.

$tomorrow = mktime(0,0,0,date("m") ,date("d")+1,date("Y"));$lastmonth = mktime(0,0,0,date("m")-1,date("d"), date("Y"));$nextyear = mktime(0,0,0,date("m"), date("d"), date("Y")+1);

localtime
Получает информацию о дате/времени.

Синтаксис :
array localtime([int timestamp [, bool is_associative]]);

Первый необязательный аргумент этой функции задает метку времени Unix. В случае, если он не указан, то используется текущее время.

Если второй необязательный параметр равен нулю (по умолчанию), то возвращаемый массив будет численно индексирован; в противном случае возвращается ассоциативный массив, где элементы имеют следующие значения:

· ([1])"tm_sec" - секунды

· ([2])"tm_min" - минуты

· ([3])"tm_hours" - часы

· ([4])"tm_mday" - день месяца

· ([5])"tm_mon" - месяц в году

· ([6])"tm_year" - год, цифровой

· ([7])"tm_wday" - день недели

· ([8])"tm_yday" - день в году

· ([9])"tm_isdst" - активен ли переход на летнее время

gettimeofday
Получени даты системным вызовом.

Синтаксис :
array gettimeofday();

Эта функция возвращает ассоциативный массив, который содержит дату, возвращенную системным вызовом. Функция является интерфейсом системной функции gettimeofday(2).
Возвращаемый ассоциативный массив содержит следующие элементы:

· "sec" - секунды

· "usec" - микросекунды

· "minuteswest" - смещение к западу от Гринвича, в минутах

· "dsttime" - тип dst коррекции (переход на летнее время)

strftime
Форматирует время согласно локальным установкам.

Синтаксис :
string strftime(string format [, int timestamp]);

Возвращает строку, отформатированную согласно данной форматной строке format и используя данную временную метку timestamp или текущее локальное время, если метка не задана.
Функцией setlocale() можно выставить язык, на котором будут выводиться названия месяцев и дней.
В форматной строке следует использовать следующие спецификаторы преобразований:

· %a - сокращенное название дня недели по умолчанию (Wed);

· %A - полное название дня недели по умолчанию (Wednesday);

· %b - сокращенное название месяца по умолчанию (Apr);

· %B - полное название месяца по умолчанию (April);

· %c - предпочтительное представление даты и времени (06/19/02 15:45:11);

· %C - номер века (год, деленный на 100 и без дробной части, от 00 до 99);

· %d - день месяца как десятичное число (в диапазоне от 0 до 31);

· %D - эквивалент %m/%d/%y;

· %e - число месяца (вместо незначащего нуля ставится пробел) (от 1 до 31);

· %h - аналог %b;

· %H - час как десятичное число в 24-часовом формате (в диапазоне от 00 до 23);

· %I - час как десятичное число в 12-часовом формате (в диапазоне от 01 до 12);

· %j - номер дня в году как десятичное число (в диапазоне от 001 до 366);

· %m - номер месяца как десятичное число (в диапазоне от 1 до 12);

· %M - минуты как десятичное число;

· %n - символ перехода на новую строку;

· %p - "am" или "pm" (до и после полудня) согласно текущему времени;

· %r - время в 12-часовом формате (a.m. или p.m.);

· %R - время в 24-часовом формате;

· %S - секунды как десятичное число;

· %t - символ табуляции;

· %T - текущее время, эквивалентно %H:%M:$S;

· %u - число дня в неделе (от 1 до 7) (понедельник - 1);

· %U - номер недели в году как десятичное число, начиная с первого Воскресенья в качестве первого дня первой недели;

· %V - номер недели в году по стандарту ISO 8601:1988 (от 1 до 53), где первая неделя - та, в которой насчитывается больше 3-х дней в текущем году;

· %W - номер недели в году как десятичное число, начиная с первого понедельника в качестве первого дня первой недели;

· %w - номер дня в неделе (от 0 до 6) (воскресенье - 0);

· %x - представление даты в системном формате без указания времени (06/13/02);

· %X - представление времени в системном формате без указания даты (15:34:54);

· %y - год как десятичное число без столетия (в диапазоне от 00 до 99);

· %Y - год как десятичное число, включая столетие;

· %Z - временная зона или название или сокращение;

· %% - символ "%".

setlocale ("LC_TIME", "C");print(strftime("%A in Finnish is "));setlocale ("LC_TIME", "fi");print(strftime("%A, in French "));setlocale ("LC_TIME", "fr");print(strftime("%A and in German "));setlocale ("LC_TIME", "de");print(strftime("A.\n"));

Форматирует локальное время согласно установкам locale.

getdate
Получает информацию о дате/времени.

Синтаксис :
array getdate(int timestamp);

Возвращает ассоциативный массив, содержащий информацию о дате со следующими элементами:

· "seconds" - секунды

· "minutes" - минуты

· "hours" - часы

· "mday" - день месяца

· "wday" - день недели, цифровой

· "mon" - месяц, цифровой

· "year" - год, цифровой

· "yday" - день года, цифровой; т.е. "299"

· "weekday" - день недели, текстовый, полный; т.е. "Friday"

· "month" - месяц, текстовый, полный; т.е. "January"

· 0 - "UNIX timestamp", полученныйаргумент.

print_r(getdate(time()));

Приведенный пример выведет следующее:

Array([seconds] => 14 [minutes] => 26 [hours] => 19 [mday] => 16 [wday] => 3 [mon] => 6 [year] => 2004 [yday] => 167 [weekday] => Wednesday [month] => June[0] => 1087399574)

gmdate
Получение даты в форматированной строке для времени GMT.

Синтаксис :
string gmdate(string format, int timestamp);

Аналогична функции date() за исключением того, что время возвращается в Гринвичском формате Greenwich Mean Time (GMT). Например, при запуске в Финляндии (GMT +0200), первая строка ниже напечатает "Jan 01 1998 00:00:00", в то время как вторая строка напечатает "Dec 31 1997 22:00:00".

echo date( "M d Y H:i:s",mktime(0,0,0,1,1,1998) );echo gmdate( "M d Y H:i:s",mktime(0,0,0,1,1,1998) );

gmstrftime
Форматирование локальных времени/даты.

Синтаксис :
string gmstrftime(string format, int timestamp);

Действие этой функции аналогично действию функции strftime() с тем отличием, что возвращается время по Гринвичу (GMT).
Например, при запуске в зоне (GMT -0500) первая строка бедт следующей: "Dec 31 1998 20:00:00", а вторая: " Jan 01 1999 01:00:00".

setlocale("LC_TIME", "en_US");echo strftime("%b %d %Y %H:%M:%S", mktime(20,0,0,12,31,98))."\n";echo gmstrftime("%b %d %Y %H:%M:%S", mktime(20,0,0,12,31,98))."\n";

mktime
Получает временную метку UNIX для даты.

Синтаксис :
int mktime([int hour] [,int minute] [,int second] [,int month] [,int day] [,int year] [, int is_dst]);

Возвращаетвременнуюметку Unix согласноданнымаргументам. Эта временная метка является целым числом, равным количеству секунд между эпохой Unix (1 Января 1970) и указанным временем.

Все парамеры это функции необязательны, но пропускать их можно только справо налево. Если какие-то параметры не заданы, на их место подставляются значения, соответствующие текущей дате.
Аргумент is_dst , указывает, осуществлен ли переход на летнее время (1) или нет (0); если не известно, то аргумент - (-1)

Функция возвращает timestamp , соответствующий указанной дате.

Правильность даты, переданной в параметрах, не проверяется. В случае некорректной даты ничего особенного не происходит - функция "делает вид", что ее не касается, и формирует соответствующий timestamp .

echo date( "M-d-Y", mktime(0,0,0,12,32,1997) ); // правильная датаecho date( "M-d-Y", mktime(0,0,0,13,1,1997) ); // неправильная датаecho date( "M-d-Y", mktime(0,0,0,1,1,1998) ); // неправильная дата

Выводит три одинаковых числа

gmmktime
Аналог функции time() для времени GMT.

Синтаксис :
int gmmktime(int hour, int minute, int second, int month, int day, int year [, int is_dst]);

Идентична mktime() за исключением того, что передаваемые параметры передают время по Гринвичу (GMT).

time
Получение времени в секунадх.

Синтаксис :
int time();

Возвращает текущее время, измеренное в числе секунд с эпохи Unix (1 Января 1970 00:00:00 GMT).
Этот формат данных принят в Unix как стандартный (называется "UNIX timestamp"): в частности, время последнего изменения файлов указывается именно в таком формате. Вообще говоря, почти все функции по работе со временеи имеют дело именно с таким его представлением (которое называется timestamp ). То есть представление " количество секунд с 1 января 1970 года" весьма универсально и, что главное, - удобно.

echo time();

microtime
Возвращает текущую временную метку UNIX в микросекундах.

Синтаксис :
string microtime();

Возвращает строку "msec sec" где sec текущее время, измеренное в числе секунд с эпохи Unix (0:00:00 1 Января, 1970 GMT), а msec - это часть в микросекундах. Эти функции доступны только в операционных системах, поддерживающих системный вызов gettimeofday().
Но дело в том, что милисекунды в различных OC выглядят по разному. Например в Unix это действительно число микросекунд, а в Windows - непонятное значение.

echo microtime(); // в Windows выведет что-то типа 0.53033200 1012468870

strtotime
Лексическое преобразование строки времени в Unix timestamp.

Синтаксис :
int strtotime(string time [, int now]);

В аргументе time функция получает дату в англоязычном формате, а затем преобразует ее в целочисленный формат Unix timestamp.

echo strtotime("now")."\n";echo strtotime("10 September 2002")."\n";echo strtotime("+2 day")."\n";echo strtotime("+3 week")."\n";echo strtotime("+1 week 2 days 4 hours 34 seconds")."\n";

Логические функции определения типа переменной

is_scalar
Проверяет, является ли переменная простой.

Синтаксис :
bool is_scalar(mixed var)

Возвращает true, если var имеет скалярный тип (чила, строки, логические значения), но не комплексный (массивы или объекты).

is_null
Проверяет, является ли переменная пустой.

Синтаксис :
bool is_null(mixed var)

Возвращает true, если var не существует (или ей явно присвоено пустое значение null). Функция эквивалентна выражению:
(var===null или is_set(var)

is_numeric
Проверяет, является ли переменная числовой.

Синтаксис :
bool is_numeric(mixed var)

Возвращает true, если var имеет численный тип (integer, double), или строковой с числовым значением.

is_bool
Проверяет, является ли переменная логической.

Синтаксис :
bool is_bool(mixed var)

Возвращает true, если var имеет тип логического значения (TRUE или FALSE), а иначе - false.

is_int
Определяет, является ли переменная типа integer(целочисленной).

Синтаксис :
bool is_int(mixed var);

Возвращает true, если var имеет целочисленный тип.

is_integer
Определяет, является ли переменная типа integer.

Синтаксис :
bool is_integer(mixed var);

Возвращает true, если var является типа integer (целочисленной), или false в обратном случае.

is_long
Определяет, является ли переменная типа integer(целочисленной).

Синтаксис :
bool is_long(mixed var);

Возвращает true, если var имеет целочисленнй тип (integer, long), или false в обратном случае.

is_real
Определяет, является ли переменная типа real (дробной).

Синтаксис :
bool is_real(mixed var);

Возвращает true, если var типа real (дробная), или false в обратном случае.

is_float
Определяет, является ли переменная типа float (дробная).

Синтаксис :
bool is_float(mixed var);

Возвращает true, если var типа float (дробная), или false в обратном случае.

is_double
Определяет, является ли переменная типа double (дробная).

Синтаксис :