SCART

распиновка

Читать

VGA

распиновка

Читать

HDMI

распиновка

Читать

DVI

распиновка

Читать

S-VIDEO

распиновка

Читать

cвободно

Читать

cвободно

Читать

cвободно

Читать

cвободно

Читать


Контакты разъема SCART (Peritel, Euroconnector)

Конт.

Сигнал

Описание

Уровень

Нагрузка

1 AOR Выход аудио, правый 0,5 В rms <1 кОм
2 AIR Вход аудио, правый 0,5 В rms >10 кОм
3 AOL Выход аудио, левый + моно 0,5 В rms <1 кОм
4 AGND Земля для аудио
5 B GND Земля для RGB Blue
6 AIL Вход аудио, левый + моно 0,5 В rms >10 кОм
7 B Вход RGB Blue (синий) 0,7 В 75 Ом
8 SWTCH Вход, переключение режима телевизора, в зависимости от типа телевизора - Audio/RGB/16:9, иногда включение AUX (старые телевизоры) 10-12 В
9 G GND Земля RGB Green
10 CLKOUT Data 2: Clockpulse Out, только в старых видеомагнитофонах
11 G Вход RGB Green (зеленый) 0,7 В 75 Ом
12 DATA Data 1: выход данных
13 R GND Земля RGB Red
14 DATAGND Земля для Data, дистанционное управление, только в старых видеомагнитофонах
15 R Вход RGB Red (красный) или Вход канала C R: 0,7 В; C: 0,3 В 75 Ом
16 BLNK Вход Blanking Signal, переключение режима телевизора (композит/RGB), "быстрый" сигнал (новые телевизоры) RGB=1-3 В; Comp=0-0,4 В 75 Ом
17 VGND Земля композитного видео
18 BLNKGND Земля Blanking Signal (для конт. 8 или 16)
19 VOUT Выход композитного видео 1 В 75 Ом
20 VIN Вход композитного видео или канал Y (яркости) 1 В 75 Ом
21 SHIELD Защитный экран/корпус

Контакты разъема VGA HD15

Конт.

Сигнал

Описание

1 RED Канал R (красный) (75 Ом, 0,7 В)
2 GREEN Канал G (зеленый) (75 Ом, 0,7 В)
3 BLUE Канал В (синий) (75 Ом, 0,7 В)
4 ID2 Идентификационный бит 2
5 GND Земля
6 RGND Земля канала R
7 GGND Земля канала G
8 BGND Земля канала B
9 KEY Нет контакта (ключ)
10 SGND Земля синхронизации
11 ID0 Идентификационный бит 0
12 ID1 or SDA Идентификационный бит 1 или данные DDC
13 HSYNC or CSYNC Строчная или композитная синхронизация
14 VSYNC Кадровая синхронизация
15 ID3 or SCL Идентификационный бит 3 или такты DDC

Контакты разъема HDMI (Single Link, Type A, до версии 1.4 включительно)

Конт.

Сигнал (англ.)

Сигнал (рус.)

1 T.M.D.S DATA 2+ Данные T.M.D.S 2+
2 T.M.D.S DATA 2 SHIELD Экран для данных T.M.D.S 2
3 T.M.D.S DATA 2- Данные T.M.D.S 2-
4 T.M.D.S DATA 1+ Данные T.M.D.S 1+
5 T.M.D.S DATA 1 SHIELD Экран для данных T.M.D.S 1
6 T.M.D.S DATA 1- Данные T.M.D.S 1-
7 T.M.D.S DATA 0+ Данные T.M.D.S 0+
8 T.M.D.S DATA 0 SHIELD Экран для данных T.M.D.S 0
9 T.M.D.S DATA 0- Данные T.M.D.S 0-
10 T.M.D.S CLOCK+ Такты T.M.D.S +
11 T.M.D.S CLOCK SHIELD Экран для тактов T.M.D.S
12 T.M.D.S CLOCK- Такты T.M.D.S -
13 CEC Сеть Consumer Electronics Control
14 Utility Используется для HEAC (Ethernet и обратный аудиоканал)
15 DDC CLOCK Такты DDC
16 DDC DATA Данные DDC
17 DDC/CEC GND Земля для DDC и CEC
18 +5V POWER Питание +5 В
19 HOT PLUG DETECT Датчик «горячего» подключения

Контакты разъема DVI-I/ DVI-D

Конт.

Сигнал (англ.)

Сигнал (рус.)

1 T.M.D.S DATA 2- Данные T.M.D.S 2-
2 T.M.D.S DATA 2+ Данные T.M.D.S 2+
3 T.M.D.S DATA 2/4 SHIELD Экран для данных T.M.D.S 2 и 4
4 T.M.D.S DATA 4- Данные T.M.D.S 4-
5 T.M.D.S DATA 4+ Данные T.M.D.S 4+
6 DDC CLOCK Такты DDC
7 DDC DATA Данные DDC
8 ANALOG VERT. SYNC Аналоговая кадровая синхр.
9 T.M.D.S DATA 1- Данные T.M.D.S 1-
10 T.M.D.S DATA 1+ Данные T.M.D.S 1+
11 T.M.D.S DATA 1/3 SHIELD Экран для данных T.M.D.S 1 и 3
12 T.M.D.S DATA 3- Данные T.M.D.S 3-
13 T.M.D.S DATA 3+ Данные T.M.D.S 3+
14 +5V POWER Питание +5 В
15 GND Земля
16 HOT PLUG DETECT Датчик "горячего" подключения
17 T.M.D.S DATA 0- Данные T.M.D.S 0-
18 T.M.D.S DATA 0+ Данные T.M.D.S 0+
19 T.M.D.S DATA 0/5 SHIELD Экран для данных T.M.D.S 0 и 5
20 T.M.D.S DATA 5- Данные T.M.D.S 5-
21 T.M.D.S DATA 5+ Данные T.M.D.S 5+
22 T.M.D.S CLOCK SHIELD Экран для тактов T.M.D.S
23 T.M.D.S CLOCK+ Такты T.M.D.S +
24 T.M.D.S CLOCK- Такты T.M.D.S -
C1 ANALOG RED Аналоговый канал R
C2 ANALOG GREEN Аналоговый канал G
C3 ANALOG BLUE Аналоговый канал B
C4 ANALOG HORZ SYNC Аналоговая строчная синхр.
C5 ANALOG GROUND Аналоговая земля

Контакты разъема S-Video (YC, S-VHS)

Стандартный 4-контактный разъем MiniDIN

Конт.

Сигнал

Описание

1 GND Земля канала Y
2 GND Земля канала C
3 Y Канал Y (Яркость+синхр.)
4 C Канал C (Цвет)

Сегодня подписан указ о деанонимизации в сети


Прощай, анонимность
11 мая, 2017 14:32
Сегодня подписан указ о деанонимизации в сети, который официально называется "О стратегии развития информационного общества в РФ на 2017-2030 годы". С полным текстом указа можно ознакомиться вот здесь http://kremlin.ru/acts/bank/41919 (версия указа в pdf)

В тексте документа предлагается принять меры, исключающие анонимность пользователей сети и их «безответственность и безнаказанность». Также планируется создание специальной системы, гарантирующей «личную безопасность пользователей, конфиденциальность их информации. В принципе, ничего неожиданного не происходит, как еще писал несколько лет назад - развитие контроля над сетью в России будет идти по мягкому китайскому варианту, что мы постепенно и наблюдаем, по мере развития и внедрения государственных инструментов контроля и мониторинга.

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

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

PETERBILT 387 2003 г.в.

Ремонт плафона освещения Прибыл на ремонт плафона осещения кабины и спальника. Оказалось, что свет включается с двух точек. Одна кнопка на торпедо, вторая сзади, у кровати спальника. Кнопки подключены параллельно.
На плафон приходят 2 провода питания и 2 провода с кнопок управления светом.
Мультивибратор последовательно включает и выключает реле питания ламп от каждого нажатия.
Были выбиты ключи мультивибратора, пишлось заменить высоковольтные транзисторы H3003. Питание на лампы стало управляться.

Синтаксис языка PHP и операторы

Выражения



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;
if ($a==5):?>A=5 endif;?>
-Блок HTML-кода A=5 будет виден, если выполнется условие $a==5

while Простейший тип цикла в PHP. Заставляет PHP выполнять вложенные операторы до тех пор, пока условие равно TRUE. Если условие равно FALSE с самого начала, то цикл не выполнится не разу.
Синтаксис : WHILE(условие)выражения
Можно сгруппировать несколько операторов внутри фигурных скобок или использовать
альтернативный синтаксис : WHILE(условие)выражения... ENDWHILE;

$a=1;

//Перед началом цикла значение переменной $a устанавливается равным 1 (это значение может быть любым). Это называется инициализацией переменной-счетчика.


while ($a<=5) {

//Пока а меньше или равно 5 цикл продолжается, при а=5 цикл останавливается Значение выражения ($a<=5) проверяется каждый раз перед итерацией цикла. После пяти итераций условное выражение вернет значение FALSE (так как значение переменной $а уже будет не меньше или равно 5) и работа цикла прекратится. В том случае, если условное выражение while будет равно FALSE с самого начала, тело цикла ни разу не будут выполнено.


echo $a++; }

//Выводим на экран числовое значение переменной а и добавляем к ней единицу



$a=1;

//Задаём начальное значение переменной а


while ($a<=5):

//Пока а меньше или равно 5 выполняется цикл, при а=5 Стоп. Выход из цикла


echo $a;

//Выводим на экран числовое значение переменной а


$a++;

//Увеличиваем а на единицу


endwhile;

//Условие цикла выполнено, а=5 Выход из цикла



Эти два примера работают однаково и выводят числа с 1 до 5.

do_while Цикл, аналогичный WHILE, но значение логического выражения проверяется не до, а после окончания итерации. цикл do while требует как ключевого слова do (для отметки начала цикла), так и ключевого слова while (для отметки конца цикла и указания условия). Во-вторых, в отличие от цикла while, цикл do 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 Набор переменных и функций, работающих с этими переменными. class 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 = 3 echo sqrt(25); // выведет 5 echo sqrt(-25); // выведет -1.#IND log Возвращает натуральный логарифм аргумента. Синтаксис : float log(float $arg) В случае недопустимого числа печатает предупреждение, но не завершает программу. $x = log(exp(2)); // exp(2) - e в степени 2 // $x = 2 $x = log(M_E); // $x = 1 echo 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); // Выведет 8 echo 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значение не сохраняются, более того - ключи просто пропадают, поэтому сортировать что-либо, отличное от списка, вряд ли целесообразно. Аргумент 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
l"; } // выведет: a = orange
ld = lemon
lb = banana
lc = apple
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 $b) ? -1 : 1; } $a=array (3,2,5,6,1); usort($a, "cmp"); while(list($key,$val)=each($a)) { echo "$key: $val\n"; } При выполнении будет напечатано: 0: 6 1: 5 2: 3 3: 2 4: 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
"; } 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
"; }; 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]]."
"; echo $arr[$rand_key[1]]."
"; Комплексная замена в строке 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( "" => "Larry", "