На главную страницу
Форум txt.version   



Статья :: Справочник по PHP : White Cat

Вниманию читателей предлагается справочник по PHP.

Справочник предназначается для людей, уже освоивших азы программирования на языке PHP.

Справочник создан на основе информации, предоставленной на сайте «Справочник Web-языков» www.spravkaweb.ru.

Справочник по PHP

О этом справочнике

Справочник предназначается для людей, уже освоивших азы программирования на языке PHP.

Справочник создан на основе информации, предоставленной на сайте «Справочник Web-языков» www.spravkaweb.ru.


В связи с тем, что данный ресурс постоянно пополняется новой информацией, скачать обновленную версию справочника можно из раздела Download

http://www.spravkaweb.ru/download.php?user=help_php


Дата выхода данной версии справочника: 06:40, 25 марта 2007.



Также на сайте доступны для скачивания справочники по CSS, Perl, MySQL.


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

Выражения


if


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

Синтаксис :

if (выражение) statement

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

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


<?php

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;

<?php

$a=1;

while ($a <= 5) {

echo $a++;

}

?>


<?php

$a = 1;

while($a <= 5):

echo $a;

$a++;

endwhile;

?>


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


do_while


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

<?php

$a = 1;

do {

echo $a;

} while ($a > 1);

?>

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

<?php

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)выражения

(условие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


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

<?php

while (list($key,$value) = each($arr)) {

if ($key % 2) {

continue;

}

do_something_odd ($value);

}

?>


switch


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

<?php

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";

}

?>


require


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

Пример:

require("include.inc");


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


include


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

<?php

$files = array ("first.inc", "second.inc", "third.inc");

for ($a = 0; $a < count($files); $a++) {

include($files[$a]);

}

?>

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

<?php

if ($a < 5) {

include("file_1.inc");

} else {

include("file_2.inc");

}

?>


function


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

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

<?php

function foo ($arg_1, $arg_2, ..., $arg_n) {

echo "Пример функции.";

return $retvalue;

}

?>

Возвращение результатов:

<?php

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


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

<?php

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;



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_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_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_div_q().


gmp_div_q


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

Синтаксис:

recource gmp_div_q(resource x, recource y [, int round])

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

У этой функции есть синоним - 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(). Она возвращает массив, состоящий из двух элементов:

$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_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



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_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.

Синтаксис:

int gmp_scan0(resource x, int start)

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


gmp_scan1


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

Синтаксис:

int gmp_scan1(resource x, int start)

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

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


Введение


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

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


Требования


Эти функции всегда доступны.


Установка


Для использования этих функций не требуется проведение установки, поскольку они являются частью ядра PHP.


Настройка во время выполнения


Данное расширение не определяет никакие директивы конфигурации в php.ini.


Типы ресурсов


Данное расширение не определяет никакие типы ресурсов.


Предопределенные константы


Перечисленные ниже константы всегда доступны как часть ядра PHP.

Флаги типа сортировки:

Введение


Введение


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

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


Требования


Эти функции всегда доступны.


Установка


Для использования этих функций не требуется проведение установки, поскольку они являются частью ядра PHP.


Настройка во время выполнения


Данное расширение не определяет никакие директивы конфигурации в php.ini.


Типы ресурсов


Данное расширение не определяет никакие типы ресурсов.


Предопределенные константы


Перечисленные ниже константы всегда доступны как часть ядра PHP.

Флаги типа сортировки:

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


array


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

Синтаксис:

array array([mixed ...])

Функция возвращает созданный массив. Индексы и значения в массиве разделяются оператором =. Пары index=value разделяются запятыми, они определяют индекс и значение.

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

Пример использования функции array():

<?php

$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] => Март

)


Функция поддерживается PHP 3, PHP 4, PHP 5


range


Создает массив и заполняет его значениями.

Синтаксис:

array range(int low, int high[, int step])

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

Дополнительный параметр step был введен в PHP 5.0.

Если третий параметр указан, то числа будут вводиться от low до high с шагом step. Если он не указан, то шаг будет равен 1.

Пример использования функции range():

<?php

// array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)

foreach (range(0, 12) as $number) {

echo $number;

}


// The step parameter was introduced in 5.0.0

// array(0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100)

foreach (range(0, 100, 10) as $number) {

echo $number;

}


// Use of character sequences introduced in 4.1.0

// array("a", "b", "c", "d", "e", "f", "g", "h", "i");

foreach (range("a", "i") as $letter) {

echo $letter;

}

// array("c", "b", "a");

foreach (range("c", "a") as $letter) {

echo $letter;

}

?>

Функция поддерживается PHP 3 = 3.0.8, PHP 4, PHP 5

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


array_reverse


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

Синтаксис:

array array_reverse(array arr [, bool preserve_keys])

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

Пример использования функции array_reverse():

<?php

$input = array("php", 4.0, array("green", "red"));

$result = array_reverse($input);

$result_keyed = array_reverse($input, true);

?>

Этот пример сделает оба массива $result и $result_keyed с одинаковыми значениями, но различными ключами. Распечатка массивов $result и $result_keyed будет следующей:

Array( [0] => Array ( [0] => green [1] => red ) [1] => 4 [2] => php)Array( [2] => Array ( [0] => green [1] => red ) [1] => 4 [0] => php)

Примечание: Второй параметр preserve_keys был добавлен в PHP 4.0.3.

Функция поддерживается PHP 4, PHP 5


shuffle


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

Синтаксис:

void shuffle(array arr)

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

Пример использования функции shuffle():

<?php

$numbers = range(1, 20);

srand((float)microtime() * 1000000);

shuffle($numbers);

while (list(, $number) = each($numbers)) {

echo "$number ";

}

?>

Замечание: Начиная с PHP 4.2.0, больше нет необходимости инициализировать генератор случайных чисел функциями srand() или mt_srand(), поскольку теперь это происходит автоматически.

Функция поддерживается PHP 3 = 3.0.8, PHP 4, PHP 5


sort


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

Синтаксис:

bool sort(array arr [, int sort_flags])

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

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

Пример использования функции sort():

<?php

$fruits = array("lemon", "orange", "banana", "apple");

sort($fruits);

reset($fruits);

while (list($key, $val) = each($fruits)) {

echo "fruits[" . $key . "] = " . $val . "n";

}

?>

Этот пример выведет:

fruits[0] = applefruits[1] = bananafruits[2] = lemonfruits[3] = orange

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

Функция поддерживается PHP 3, PHP 4, PHP 5


rsort


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

Синтаксис:

bool rsort ( array array [, int sort_flags])

Функция rsort() сортирует массив array в порядке убывания (от высших значений к низшим).

Функция возвращает TRUE в случае успешного завершения, и FALSE в противном случае.

Пример использования функции rsort():

<?php

$fruits = array("lemon", "orange", "banana", "apple");

rsort($fruits);

reset($fruits);

while (list($key, $val) = each($fruits)) {

echo "$key = $valn";

}

?>

Этот пример выведет:

0 = orange1 = lemon2 = banana3 = apple

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

Функция поддерживается PHP 3, PHP 4, PHP 5


asort


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

Синтаксис:

bool asort(array arr [, int sort_flags])

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

Функция возвращает true в случае успешного завершения, и false в случае возникновения ошибки.

Пример использования функции asort():

<?php

$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");

asort($fruits);

reset($fruits);

while (list($key, $val) = each($fruits)) {

echo "$key = $valn";

}

?>

Пример выведет следующее:

c = appleb = bananad = lemona = orange

Массив $fruits был отсортирован в возрастающем символьном порядке, при этом индексы массива были сохранены.

Метод сортировки может быть изменен при помощи необязательного параметра sort_flags.

Этот параметр может указать, как сравнивать значения (как строки или как числа). Он может принимать следующие предопределенные значения:

Этот параметр был введен в PHP начиная с 4 версии.

Функция поддерживается PHP 3, PHP 4, PHP 5


arsort


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

Синтаксис:

bool arsort(array arr [, int sort_flags])

Функция arsort() сортирует массив arr по убыванию с сохранением индексных ассоциаций.

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

Функция возвращает true в случае успешной сортировки, и false в случае возникновения ошибки.

Пример использования функции arsort():

$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 = oranged = lemonb = bananac = apple

Массив $arr был отсортирован в убывающем символьном порядке, при этом индексы массива были сохранены.

Метод сортировки может быть изменен при помощи необязательного параметра sort_flags.

Этот параметр может указать, как сравнивать значения (как строки или как числа). Он может принимать следующие предопределенные значения:

Этот параметр был введен в PHP начиная с 4 версии.

Функция поддерживается PHP 3, PHP 4, PHP 5


ksort


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

Синтаксис:

bool ksort(array arr [, int sort_flags])

Функция ksort() сортирует массив в порядке возрастания ключей с сохранением взаимосвязей ключей и значений. Эта функция особенно полезна при сортировке ассоциативных массивов.

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

Пример использования функции ksort():

<?php

$fruits = array("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");

ksort($fruits);

reset($fruits);

while (list($key, $val) = each($fruits)) {

echo "$key = $valn";

}

?>

Данный пример выведет:

a = orangeb = bananac = appled = lemon

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

Функция поддерживается PHP 3, PHP 4, PHP 5


krsort


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

Синтаксис:

bool krsort(array arr [, int sort_flags])

Функция krsort() сортирует ключи в массиве arr в обратном порядке. При этом связка ключей и значений сохраняется. Эта функци полезна при сортировке ассоциативных массивов.

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

Пример использования функции krsort():

<?php

$fruits = array("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");

krsort($fruits);

reset($fruits);

while (list($key, $val) = each($fruits)) {

echo "$key = $valn";

}

?>

Данный пример выведет:

d = lemonc = appleb = bananaa = orange

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

Функция поддерживается PHP 3 = 3.0.13, PHP 4, PHP 5


natsort


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

Синтаксис:

void natsort(array arr)

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

Пример использования функции natsort():

<?php

$array1 = $array2 = array("img12.png", "img10.png", "img2.png", "img1.png");


sort($array1);

echo "Стандартная сортировкаn";

print_r($array1);


natsort($array2);

echo "nЕстественная сортировкаn";

print_r($array2);

?>

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

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

Функция поддерживается PHP 4, PHP 5


natcasesort


Выполняет естественную сортировку массива без учета регистра символов.

Синтаксис:

void natcasesort(array arr)

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

Эта функция схожа с natsort(), только не учитывает регистр символов.

Пример использования функции natcasesort():

<?php

$array1 = $array2 = array("IMG0.png", "img12.png", "img10.png",

"img2.png", "img1.png", "IMG3.png");


sort($array1);

echo "Стандартная сортировкаn";

print_r($array1);


natcasesort($array2);

echo "nЕстественная сортировка (без учета регистра)n";

print_r($array2);

?>

Приведенный пример выведет следующее:

Стандартная сортировкаArray( [0] => IMG0.png [1] => IMG3.png [2] => img1.png [3] => img10.png [4] => img12.png [5] => img2.png)Естественная сортировка (без учета регистра)Array( [0] => IMG0.png [4] => img1.png [3] => img2.png [5] => IMG3.png [2] => img10.png [1] => img12.png)

Функция поддерживается PHP 4, PHP 5


uasort


Пользовательская сортировка ассоциативного массива с сохранением индексных ассоциаций.

Синтаксис:

bool uasort(array arr, function cmp_function)

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

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

Функция uasort() возвращает true в случае успешного завершения сортировки, и false в противном случае.

Замечание: Смотрите функции usort() и uksort() для написания пользовательской функции.

Функция поддерживается PHP 3 =3.0.4, PHP 4, PHP 5


uksort


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

Синтаксис:

bool uksort(array arr, function cmp_function)

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

Функция uksort() возвращает true в случае успешного завершения сортировки, и FALSE в противном случае.

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

1 пример использования функции 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"); //передаем функцию сортировки "по ссылке"


2 пример использования функции uksort():

<?php

function cmp($a, $b)

{

if ($a == $b) {

return 0;

}

return ($a > $b) ? -1 : 1;

}


$a = array(4 => "four", 3 => "three", 20 => "twenty", 10 => "ten");


uksort($a, "cmp");


while (list($key, $value) = each($a)) {

echo "$key: $valuen";

}

?>

Этот пример выведет:

20: twenty10: ten4: four3: three

Функция поддерживается PHP 3 =3.0.4, PHP 4, PHP 5


usort


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

Синтаксис:

bool usort(array arr, callback cmp_function)

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

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

Пример использования функции usort():

<?php

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, $value) = each($a)) {

echo "$key: $valuen";

}

?>

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

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: $valn";

}


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

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

Если необходимо отсортировать массив с различными вторыми ключами, можно поступить следующим образом:

<?php

function arr_sort($a,$b) {

list($key1,$val)=each($a);

list($key2,$val)=each($b);

return strcmp($a[$key1],$b[$key2]);

};


$arr[0]["1-ый элемент"]="яблока";

$arr[1]["2-ый элемент"]="груша";

$arr[2]["3-ый элемент"]="персик";

$arr[3]["4-ый элемент"]="дыня";

$arr[4]["5-ый элемент"]="малина";

$arr[5]["6-ый элемент"]="ананас";


usort($arr,"arr_sort");


echo "<pre>";

print_r($arr);

echo "</pre>";

?>

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

Array( [0] => Array ( [6-ый элемент] => ананас ) [1] => Array ( [2-ый элемент] => груша ) [2] => Array ( [4-ый элемент] => дыня ) [3] => Array ( [5-ый элемент] => малина ) [4] => Array ( [3-ый элемент] => персик ) [5] => Array ( [1-ый элемент] => яблока ))

Функция поддерживается PHP 3 =3.0.3, PHP 4, PHP 5


array_multisort


Сортировка нескольких массивов или многомерного массива.

Синтаксис:

bool array_multisort(array ar1, [, mixed arg [, mixed ... [, array ...]]])

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

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

Флаги определения порядка сортировки:

Флаги типа сортировки:

Уазание несколько флагов сортировки после одного массива недопустимо. Флаги сортировки, которые переются после аргумента arr применяются только к этому аргументу. Если после следующего аргумента флаги не указаны, то принимаются флаги по умолчанию (SORT_ASC, SORT_REGULAR).

Пример использования функции array_multisort():

Сортировка нескольких массивов

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", 3);


Элементы второго массива, соответствующие одинаковым элементам (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) - сортируются как числа по убыванию


Функция поддерживается PHP 4, PHP 5

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


reset


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

Синтаксис:

mixed reset(array arr)

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

Пример использования функции reset():

<?php

$array = array("step one", "step two", "step three", "step four");

// by default, the pointer is on the first element

echo current($array) . "<br />n"; // "step one"


// skip two steps

next($array);

next($array);

echo current($array) . "<br />n"; // "step three"

// reset pointer, start again on step one

reset($array);

echo current($array) . "<br />n"; // "step one"

?>

Функция поддерживается PHP 3, PHP 4, PHP 5


end


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

Синтаксис:

mixed end(array arr)

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

Пример использования функции end():

<?php

$fruits = array("apple", "banana", "cranberry");

echo end($fruits); // cranberry

?>

Функция поддерживается PHP 3, PHP 4, PHP 5


next


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

Синтаксис:

mixed next(array arr)

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

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

Пример использования функции next():

<?php

$transport = array("foot", "bike", "car", "plane");

$mode = current($transport); // $mode = "foot";

$mode = next($transport); // $mode = "bike";

$mode = next($transport); // $mode = "car";

$mode = prev($transport); // $mode = "bike";

$mode = end($transport); // $mode = "plane";

?>

Функция поддерживается PHP 3, PHP 4, PHP 5


prev


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

Синтаксис:

mixed prev(array arr)

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

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

Пример использования функции prev():

<?php

$transport = array("foot", "bike", "car", "plane");

$mode = current($transport); // $mode = "foot";

$mode = next($transport); // $mode = "bike";

$mode = next($transport); // $mode = "car";

$mode = prev($transport); // $mode = "bike";

$mode = end($transport); // $mode = "plane";

?>

Функция поддерживается PHP 3, PHP 4, PHP 5


current


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

Синтаксис:

mixed current(array arr)

Каждый массив имеет внутренний указатель(курсор) текущего элемента. Обычно он указывает на первый элемент массива.

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

Если указатель находиться за пределами массива, или массив пустой, то функция возвратит FALSE.

Пример использования функции current():

<?php

$transport = array("foot", "bike", "car", "plane");

$mode = current($transport); // $mode = "foot";

$mode = next($transport); // $mode = "bike";

$mode = current($transport); // $mode = "bike";

$mode = prev($transport); // $mode = "foot";

$mode = end($transport); // $mode = "plane";

$mode = current($transport); // $mode = "plane";

?>

Функция поддерживается PHP 3, PHP 4, PHP 5


pos


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

Синтаксис:

mixed pos(array arr)

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


key


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

Синтаксис:

mixed key(array arr)

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

Пример использования функции key():

<?php

$array = array(

"fruit1" => "apple",

"fruit2" => "orange",

"fruit3" => "grape",

"fruit4" => "apple",

"fruit5" => "apple");


// этот цикл пройдется по всему массиву

// и выведет имя ключа элемента массива

// значение которого равно "apple"


while ($fruit_name = current($array)) {

if ($fruit_name == "apple") {

echo key($array)."*<br />";

}

next($array);

}

?>

Функция поддерживается PHP 3, PHP 4, PHP 5


each


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

Синтаксис:

array each(array arr)

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


Пример использования функции each():

<?php

$foo = array("bob", "fred", "jussi", "jouni", "egon", "marliese");

$bar = each($foo);

print_r($bar);

?>

Массив $bar будет иметь ключи и значения:

Array( [1] => bob [value] => bob [0] => 0 [key] => 0)

<?php

$foo = array("Robert" => "Bob", "Seppo" => "Sepi");

$bar = each($foo);

print_r($bar);

?>

Массив $bar будет иметь ключи и значения:

Array( [1] => Bob [value] => Bob [0] => Robert [key] => Robert)

Пример использования функции each():

Пролистывание массива

<?php

$fruit = array("a" => "apple", "b" => "banana", "c" => "cranberry");


reset($fruit);

while (list($key, $val) = each($fruit)) {

echo "$key => $valn";

}

?>

Пример выведет:

a => appleb => bananac => cranberry

Функция поддерживается PHP 3, PHP 4, PHP 5


array_walk


Применение пользовательской функции к элементам массива.

Синтаксис:

bool array_walk(array arr, callback function [, mixed userdata])

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

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

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

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

Пример использования функции array_walk():

<?php

$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");


function test_alter(&$item1, $key, $prefix)

{

$item1 = "$prefix: $item1";

}


function test_print($item2, $key)

{

echo "$key. $item2<br />n";

}


echo "Before ...:n";

array_walk($fruits, "test_print");


array_walk($fruits, "test_alter", "fruit");

echo "... and after:n";


array_walk($fruits, "test_print");

?>

Приведенный пример выведет следующее:

Before ...:d. lemona. orangeb. bananac. apple... and after:d. fruit: lemona. fruit: orangeb. fruit: bananac. fruit: apple

Функция поддерживается PHP 3 = 3.0.3, PHP 4, PHP 5

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


array_flip


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

Синтаксис:

array array_flip(array arr)

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

Значения массива arr должны быть либо целыми числами, либо строковыми значениями. Иначе пара ключ / значение не будут обработаны.

Функция array_flip() возвратит FALSE, если обработка массива вызвала ошибку.

Пример использования функции array_flip():

$trans = array_flip ($trans);

$original = strtr ($str, $trans);


Пример использования функции array_flip():

многократное повторение значения

<php

$trans = array ("a" => 1, "b" => 1, "c" => 2);

$trans = array_flip ($trans);

print_r($trans);



Приведенный выше пример выведет следующее:

Array( [1] => b [2] => c)

Функция поддерживается PHP 4, PHP 5


array_keys


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

Синтаксис:

array array_keys(array arr [,mixed search_value])

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

Пример испольльзования функции array_keys():

<?php

$arr = array(0 => 100, "color" => "red", 15);

print_r(array_keys($arr));


$arr = array("blue", "red", "green", "blue", "blue");

print_r(array_keys($arr, "blue"));


$array = array ("color" => array("blue", "red", "green"), "size" => array("small", "medium", "large"));

print_r(array_keys ($array));

?>

Приведенный выше пример выведет следующее:

Array( [0] => 0 [1] => color)Array( [0] => 0 [1] => 3 [2] => 4)Array( [0] => color [1] => size)

Функция array_keys() появилась в PHP 4.

Ее эквивалент для PHP 3:

function array_keys ($arr, $term="") {

$t = array();

while (list($k,$v) = each($arr)) {

if ($term && $v != $term) {

continue;

}

$t[] = $k;

}

return $t;

}


Функция поддерживается PHP 4, PHP 5


array_values


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

Синтаксис:

array array_values(array arr)

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

Пример использования функции array_values():

$arr = array("size" => "XL", "color" => "gold");

print_r(array_values($arr));


Этот пример выведет:

Array( [0] => XL [1] => gold)

Функция поддерживается PHP 4, PHP 5


in_array


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

Синтаксис:

bool in_array ( mixed needle, array haystack [, bool strict])

Функция in_array() возвратит TRUE, если в массиве haystack содержится элемент со значением needle, и FALSE в противном случае.

Если установить третий необязательный параметр strict в значение TRUE, то функция in_array() при проверке также будет сравнивать типы значений.

Замечание: Если параметр needle является строкой, то при сравнении регистр символов учитывается.

Замечание: В PHP версии ниже 4.2.0 параметр needle не мог быть массивом.

Пример использования функции in_array():

<?php

$os = array("Mac", "NT", "Irix", "Linux");

if (in_array("Irix", $os)) {

echo "Got Irix";

}

if (in_array("mac", $os)) {

echo "Got mac";

}

?>

Второе условие не сработает, т.к. поиск в массиве идет с учетом регистра.

Пример выведет:

Got Irix

Пример использования функции in_array(): Использование параметра strict

<?php

$a = array(array("p", "h"), array("p", "r"), "o");


if (in_array(array("p", "h"), $a)) {

echo "ph was foundn";

}


if (in_array(array("f", "i"), $a)) {

echo "fi was foundn";

}


if (in_array("o", $a)) {

echo "o was foundn";

}

?>

Пример выведет:

ph was found o was found

Функция поддерживается PHP 4, PHP 5


array_count_values


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

Синтаксис:

array array_count_values(array arr)

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

Пример использования функции array_count_values():

$arr = array(1, "hello", 1, "world", "hello");

print_r(array_count_values($arr));


Пример выведет следующее:

Array( [1] => 2 [hello] => 2 [world] => 1)

Функция поддерживается PHP 4, PHP 5


sizeof


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

Синтаксис:

int sizeof(array arr)

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


count


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

Синтаксис:

int count(mixed var [, int mode])

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

Надо отметить, что 0 возвращается и тогда, когда указан массив, не содержащий элементов (NULL).

Если задан необязательный параметр mode, то будет подсчитано общее количество элементов в массиве. Это может быть полезно при нахождении количества элементов в многомерных массивах.

Пример использования функции count():

<?php

$a[0] = 1;

$a[1] = 3;

$a[2] = 5;

$result = count($a);

// $result == 3


$b[0] = 7;

$b[5] = 9;

$b[10] = 11;

$result = count($b);

// $result == 3;

?>

Пример использования функции count(): (PHP = 4.2.0)

<?php

$food = array("fruits" => array("orange", "banana", "apple"),

"veggie" => array("carrot", "collard", "pea"));


// recursive count

echo count($food, COUNT_RECURSIVE); // выведет 8


// normal count

echo count($food); // выведет 2

?>

Функция поддерживается PHP 3, PHP 4, PHP 5


array_sum


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

Синтаксис:

mixed array_sum(array arr)

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

Пример использования функции array_sum():

<?php

$a = array(2, 4, 6, 8);

echo "sum(a) = " . array_sum($a) . "<BR>";


$b = array("a" => 1.2, "b" => 2.3, "c" => 3.4);

echo "sum(b) = " . array_sum($b) . "<BR>";

?>

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

sum(a) = 20sum(b) = 6.9

Функция поддерживается PHP 4 =4.0.4, PHP 5


array_rand


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

Синтаксис:

mixed array_rand(array arr [, int num_req])

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

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

Пример использования функции array_rand():

<?php

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>";

?>

Функция поддерживается PHP 4, PHP 5


array_change_key_case


Функция устанавливает значения ключей массива в верхний или нижний регистр.

Синтаксис:

array array_change_key_case(array arr[, int registr])

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

Необязательный параметр registr может принимать следующие значения:

Данная функция не изменяет ключи, состоящие из чисел.

Пример использования функции array_change_key_case():

$array = array("FirSt" => 1, "SecOnd" => 4);

print_r(array_change_key_case($array, CASE_UPPER));

print_r(array_change_key_case($array, CASE_LOWER));


Пример выведет следующее:

Array

(

[FIRST] => 1

[SECOND] => 2

)

Array

(

[first] => 1

[second] => 2

)



Функция поддерживается PHP 4 = 4.2.0, PHP 5


array_combine


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

Синтаксис:

array array_combine(array keys, array values)

Функция array_combine() возвращает массив, ключами которого являются значения массива keys, а значениями - значения массива values.

Функция возвратит FALSE, если размерность массивов keys и values не совпадают, или эти массивы не содержат значений.

Пример использования функции array_combine():

<?php

$a = array("green", "red", "yellow");

$b = array("avocado", "apple", "banana");

$c = array_combine($a, $b);


print_r($c);

?>

Пример выведет следующее:

Array( [green] => avocado [red] => apple [yellow] => banana)

Функция поддерживается PHP 5


array_key_exists


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

Синтаксис:

bool array_key_exists(mixed key, array search)

Функция array_key_exists() возвратит TRUE, если в массиве search присутствует элемент с индексом key.

В противном случае возвратит FALSE.

Пример использования функции array_key_exists():

<?php

$search_array = array("first" => 1, "second" => 4);

if (array_key_exists("first", $search_array)) {

echo "The <I>first</I> element is in the array";

}

?>

В PHP 4.0.6. имя этой функции key_exists().

Функция поддерживается PHP 4 = 4.0.1, PHP 5

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


array_diff


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

Синтаксис:

array array_diff(array arr1, array arr2 [, array ...])

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

$arr1 = array("a" => "green", "red", "blue", "red");

$arr2 = array("b" => "green", "yellow", "red");

$result = array_diff($arr1, $arr2);

// $result = array("blue")


Повторение одного и того же значения "red" в массиве arr1 обрабатывается как одно значение.

Стоит отметить, что два элемента считаются одинаковыми, только если их строковое представление идентично. Т.е. (string) $elem1 === (string) $elem2.

Также стоит отметить, что данная функция корректно обрабатывает только одно измерение N-мерного массива. Если есть необходимость обрабатывать более глубокие уровни вложенности, можно использовать конструкцию array_diff($arr1[0], $arr2[0]);.

Функция поддерживается PHP 4 = 4.0.1, PHP 5


array_diff_assoc


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

Синтаксис:

array array_diff_assoc(array arr1, array arr2 [, array ...])

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

Пример использования array_diff_assoc():

<?php

$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");

$array2 = array("a" => "green", "yellow", "red");

$result = array_diff_assoc($array1, $array2);

print_r($result);

?>

Пример выведет следующее:

Array( [b] => brown [c] => blue [0] => red)

В приведенном примере пара "a" = "green" присутствует в обоих массивах, поэтому она не вошла в результирующий массив. В отличие от этого, значение red присутствует в результирующем массиве, т.к. в первом массиве это значение имело ключ 0, а во втором массиве оно имело ключ 1.

Две пары ключ = значение считаются равными, если они тождественны друг другу, т.е. (string) $elem1 === (string) $elem2.

Обратите внимание, что данная функция не позволяет напрямую сравнивать многомерные массивы. Хотя конечно можно сравнить вложенные массивы, используя, например, array_diff_assoc ($array1 [0], $array2 [0]);.

Функция поддерживается PHP 4 =4.3.0, PHP 5


array_diff_uassoc


Определение различия между массивами при помощи пользовательской функции с дополнительной проверкой ключей массива.

Синтаксис:

array array_diff_uassoc(array arr1, array arr2 [, array ..., callback key_compare_func])

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

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

Пример использования array_diff_uassoc():

<?php

function key_compare_func($a, $b)

{

if ($a === $b) {

return 0;

}

return ($a > $b)? 1:-1;

}


$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");

$array2 = array("a" => "green", "yellow", "red");

$result = array_diff_uassoc($array1, $array2, "key_compare_func");

?>

Пример выведет следующее:

Array( [b] => brown [c] => blue [0] => red)

В приведенном примере пара "a" = "green" присутствует в обоих массивах, поэтому она не вошла в результирующий массив. В отличие от этого, значение red присутствует в результирующем массиве, т.к. в первом массиве это значение имело ключ 0, а во втором массиве оно имело ключ 1.

Равенство индексов проверяется пользовательской функцией.

Обратите внимание, что данная функция не позволяет напрямую сравнивать многомерные массивы. Хотя конечно можно сравнить вложенные массивы, используя, например, array_diff_uassoc ($array1[0], $array2[0], "key_compare_func");.

Функция поддерживается PHP 5


array_udiff


Сравнивает массивы используя пользовательскую функцию.

Синтаксис:

array array_udiff( array array1, array array2 [, array ..., callback data_compare_func])

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

Стоит отметить, что ключи значений сохраняются.

Для сравнения значений массивов используется пользовательская функция data_compare_func. Она возвращает число, большее нуля, равное нулю или меньшее нуля, если первый аргумент, переданные ей в виде параметра, больше, равен или меньше второго параметра соответственно. Это отличается от функции array_diff(), где используется встроенная функция сравнения. Пример использования функции array_udiff_assoc():

<?php

class cr {

private $priv_member;

function cr($val)

{

$this->priv_member = $val;

}

function comp_func_cr($a, $b)

{

if ($a->priv_member === $b->priv_member) return 0;

return ($a->priv_member > $b->priv_member)? 1:-1;

}

}

$a = array("0.1" => new cr(9), "0.5" => new cr(12), 0 => new cr(23), 1=> new cr(4), 2 => new cr(-15),);

$b = array("0.2" => new cr(9), "0.5" => new cr(22), 0 => new cr(3), 1=> new cr(4), 2 => new cr(-15),);


$result = array_udiff($a, $b, array("cr", "comp_func_cr"));

print_r($result);

?>

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

Array( [0.5] => cr Object ( [priv_member:private] => 12 ) [0] => cr Object ( [priv_member:private] => 23 ))

Два значения будут сочтены равными, только если (string) $elem1 === (string) $elem2 (т.е. когда строки содержат одно и тоже).

Стоит отметить, что данная функция в случае многомерного массива использует для сравнения одного измерение. Если вы хотите пройтись по всем измерениям, стоит использовать конструкцию array_udiff($array1[0], $array2[0], "data_compare_func");

Функция поддерживается PHP 5


array_udiff_assoc


Сравнивает массивы используя пользовательскую функцию.

Синтаксис:

array array_udiff_assoc( array array1, array array2 [, array ..., callback data_compare_func])

Функция array_udiff_assoc() возвращает массив, содержащий все значения массива array1, которые не присутствуют в других массивах, переданные в параметрах. Стоит отметить, что ключи значений используются при сравнении в отличии от функций array_diff() и array_udiff().

Для сравнения значений массивов используется пользовательская функция. Этим данная функция отличается от array_diff_assoc(), которая использует внутреннюю функции для сравнения.

Пример использования функции array_udiff_assoc():

<?php

class cr {

private $priv_member;

function cr($val)

{

$this->priv_member = $val;

}

function comp_func_cr($a, $b)

{

if ($a->priv_member === $b->priv_member) return 0;

return ($a->priv_member > $b->priv_member)? 1:-1;

}

}


$a = array("0.1" => new cr(9), "0.5" => new cr(12), 0 => new cr(23), 1=> new cr(4), 2 => new cr(-15),);

$b = array("0.2" => new cr(9), "0.5" => new cr(22), 0 => new cr(3), 1=> new cr(4), 2 => new cr(-15),);


$result = array_udiff_assoc($a, $b, array("cr", "comp_func_cr"));

print_r($result);

?>

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

Array( [0.1] => cr Object ( [priv_member:private] => 9 ) [0.5] => cr Object ( [priv_member:private] => 12 ) [0] => cr Object ( [priv_member:private] => 23 ))

В нашем примере пара 1= new cr(4) присутствует в обеих массивах и по этому она не вошла в результирующий массив.

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

Функция поддерживается PHP 5


array_udiff_uassoc


Сравнивает массивы используя пользовательскую функцию.

Синтаксис:

array array_udiff_uassoc ( array array1, array array2 [, array ..., callback data_compare_func, callback key_compare_func])

Функция array_udiff_uassoc() возвращает массив, содержащий все значения массива array1, которые не присутствуют в других массивах, переданные в параметрах. Стоит отметить, что ключи значений используются при сравнении в отличии от функций array_diff() и array_udiff().

Для сравнения значений массивов используется пользовательская функция data_compare_func. Этим данная функция отличается от array_diff_assoc(), которая использует внутреннюю функции для сравнения.

Сравнение ключей (индексов) происходит при помощи пользовательской функции key_compare_func. Этим данная функция отличается от array_udiff_assoc(), которая использует внутреннюю функции для сравнения.

Пример использования функции array_udiff_uassoc():

<?php

class cr {

private $priv_member;

function cr($val)

{

$this->priv_member = $val;

}


function comp_func_cr($a, $b)

{

if ($a->priv_member === $b->priv_member) return 0;

return ($a->priv_member > $b->priv_member)? 1:-1;

}

function comp_func_key($a, $b)

{

if ($a === $b) return 0;

return ($a > $b)? 1:-1;

}

}

$a = array("0.1" => new cr(9), "0.5" => new cr(12), 0 => new cr(23), 1=> new cr(4), 2 => new cr(-15),);

$b = array("0.2" => new cr(9), "0.5" => new cr(22), 0 => new cr(3), 1=> new cr(4), 2 => new cr(-15),);


$result = array_udiff_uassoc($a, $b, array("cr", "comp_func_cr"), array("cr", "comp_func_key"));

print_r($result);

?>

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

Array( [0.1] => cr Object ( [priv_member:private] => 9 ) [0.5] => cr Object ( [priv_member:private] => 12 ) [0] => cr Object ( [priv_member:private] => 23 ))

В нашем примере пара 1= new cr(4) присутствует в обеих массивах и по этому она не вошла в результирующий массив.

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

Функция поддерживается PHP 5


array_intersect


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

Синтаксис:

array array_intersect(array arr1, array arr2 [, array ...])

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

Пример использования функции array_intersect():

<?php

$arr1 = array("a" => "green", "red", "blue");

$arr2 = array("b" => "green", "yellow", "red");

$result = array_intersect($arr1, $arr2);

print_r($result);

?>

Пример выведет:

Array( [a] => green [0] => red)

Функция поддерживается PHP 4 = 4.0.1, PHP 5


array_intersect_assoc


Функция возвращает пересечения значений массивов с сохранением индексов.

Синтаксис:

array array_intersect_assoc(array array1, array array2 [, array ...])

Функция array_intersect_assoc() возвращает массив, который содержит все значения array1, имеющиеся во всех остальных перечисленных массивах. В отличие от функции array_intersect() при сравнении ключи учитываются.

Пример использования функции array_intersect_assoc():

<?php

$array1 = array("a" => "яблоко", "b" => "груша", "c" => "дыня", "слива");

$array2 = array("a" => "яблоко", "апельсин", "слива");

$result_array = array_intersect_assoc($array1, $array2);

?>

Пример выведет следующее:

Array( [a] => яблоко)

Приведенный пример вывел только значение [a] = яблоко, т.к. это значение присутствовало и в первом и во втором массиве.

Значение дыня не выведено, т.к. в первом массиве у него был индекс 0, а во втором - 1

Функция поддерживается PHP 4 = 4.3.0, PHP 5


array_merge


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

Синтаксис:

array array_merge(array arr1, array arr2 [, array ...])

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

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

Однако это не затрагивает числовые ключи: элементы с такими ключами помещаются в конец результирующего массива в любом случае.

Пример использования функции array_merge():

<?php

$array1 = array ("color" => "red", 2, 4);

$array2 = array ("a", "b", "color" => "green", "shape" => "trapezoid", 4);

$result = array_merge ($array1, $array2);

print_r($result);

?>

Пример выведет следующее:

Array( [color] => green [0] => 2 [1] => 4 [2] => a [3] => b [shape] => trapezoid [4] => 4)

Другой пример использования функции array_merge():

<?php

$array1 = array();

$array2 = array(1 => "data");

$result = array_merge($array1, $array2);

print_r($result);

?>

Пример выведет следующее:

Array( [0] => data)

Стоит отметить, что числовые ключи были потеряны.

Если есть необходимость просто слить массивы вместе, используйте оператор +

<?php

$array1 = array();

$array2 = array(1 => "data");

$result = $array1 + $array2;

print_r($result);

?>

Пример выведет следующее:

Array( [1] => data)

Функция поддерживается PHP 4, PHP 5


array_merge_recursive


Рекурсивное слияние сложных массивов.

Синтаксис:

array array_merge_recursive(array arr1, array arr2 [, array ...])

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

Функция возвращает массив, состоящий из объединенных массивов.

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

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

Пример использования функции array_merge_recursive():

<?php

$arr1 = array("color" => array("favorite" =>"red"), 5);

$arr2 = array(10, "color" => array("favorite" =>"green", "blue"));

$result = array_merge_recursive($arr1, $arr2);

print_r($result_;

?>

Пример выведет:

Array( [color] => Array ( [favorite] => Array ( [0] => red [1] => green ) [0] => blue ) [0] => 5 [1] => 10)

Функция поддерживается PHP 4 =, PHP 5

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


array_slice


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

Синтаксис:

array array_slice(array arr, int offset [, int lenght])

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

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

Если указать length>0, то это число возвращаемых в массиве элементов, а если length<0, то это позиция последнего возвращаемого элемента в массиве arr от его конца.

Пример использования функции array_slice():

<?php

$input = array("a", "b", "c", "d", "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"

?>

Функция поддерживается PHP 4, PHP 5


array_splice


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

Синтаксис:

array array_splice(array arr, int offset [, int lenght [, int replacement]])

Функция array_splice(), также как и array_slice(), возвращает подмасcив arr начиная с индекса offset максимальной длины lenght, но, вместе с тем, она делает и другое полезное действие. А именно, она заменяет только что указанные элементы на то, что находится в массиве replacement (или просто удаляет, если replacement не указан).

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

Если указать length>0, то это число возвращаемых в массиве элементов, а если length<0, то это позиция последнего возвращаемого элемента в массиве arr от его конца.

В качестве примера укажем следующие эквивалентыне замены:

array_push($input, $x, $y) array_splice($input, count($input), 0, array($x, $y))

array_pop($input) array_splice($input, -1)

array_shift($input) array_splice($input, -1)

array_unshift($input, $x, $y) array_splice($input, 0, 0, array($x, $y))

$a[$x] = $y array_splice($input, $x, 1, $y)


Пример использования функции array_splice():

<?php

$input = array("red", "green", "blue", "yellow");

array_splice($input, 2);

// $input is now array("red", "green")


$input = array("red", "green", "blue", "yellow");

array_splice($input, 1, -1);

// $input is now array("red", "yellow")


$input = array("red", "green", "blue", "yellow");

array_splice($input, 1, count($input), "orange");

// $input is now array("red", "orange")


$input = array("red", "green", "blue", "yellow");

array_splice($input, -1, 1, array("black", "maroon"));

// $input is now array("red", "green",

// "blue", "black", "maroon")


$input = array("red", "green", "blue", "yellow");

array_splice($input, 3, 0, "purple");

// $input is now array("red", "green",

// "blue", "purple", "yellow");

?>

Функция поддерживается PHP 4, PHP 5

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


array_pad


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

Синтаксис:

array array_pad(array input, int pad_size, mixed pad_value)

Функция array_pad() возвращает копию массива input, в который были добавлены элементы с значениями pad_value, так, что число элементов в получившемся массиве будет равно pad_size.

Если pad_size0, то элементы будут добавлены в конец массива, а если <0 - то в начало.

В случае, если значение pad_size меньше элементов в исходном массиве input, то никакого добавления не произойдет, и функция вернет исходный массив input.

Пример использования функции array_pad():

$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");

// не добавит


Функция поддерживается PHP 4, PHP 5


array_pop


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

Синтаксис:

mixed array_pop(array arr);

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

После использования функции array_pop() курсор массива устанавливается в начало.

Пример использования функции array_pop():

<?php

$stack = array("orange", "apple", "raspberry");

$fruits = array_pop($stack);

print_r($stack);

print_r($fruits);

?>

Пример выведет следующее:

Array( [0] => orange [1] => banana [2] => apple)

Функция поддерживается PHP 4, PHP 5


array_push


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

Синтаксис:

int array_push(array arr, mixed var1 [, mixed var2, ..])

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

array_push($Arr,1000); // вызываем функцию

$Arr[]=100; // то же самое, но короче


Пример использования функции array_push():

<?php

$stack = array("orange", "banana");

array_push($stack, "apple", "raspberry");

print_r($stack);

?>

Пример выведет следующее:

Array( [0] => orange [1] => banana [2] => apple [3] => raspberry)

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

Функция поддерживается PHP 4, PHP 5


array_shift


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

Синтаксис:

mixed array_shift(array arr)

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

Если массив arr пустой или он не является массивом, функция возвращает NULL.

После использования этой функции указатель массива становится в начало.

Пример использования функции array_shift():

<?php

$stack = array("orange", "banana", "apple", "raspberry");

$fruit = array_shift($stack);

print_r($stack);

?>

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

Array( [0] => banana [1] => apple [2] => raspberry)

а переменная $fruit будет иметь значение "orange"

Функция поддерживается PHP 4, PHP 5


array_unshift


Добавляет одно или несколько значений в начало массива.

Синтаксис:

int array_unshift(list arr, mixed var1 [,mixed var2, ...])

Функция array_unshift() добавляет переданные значения var в начало массива arr. Порядок расположения новых элементов в массиве сохраняется. Все цифровые индексы массива будут изменены таким образом, чтобы она начинались с нуля. Все строковые индексы массива не изменяются.

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

Пример использования функции array_unshift():

<?php

$queue = array("orange", "banana");

array_unshift($queue, "apple", "raspberry");

?>

Теперь переменная $queue будет иметь следующие элементы:

Array( [0] => apple [1] => raspberry [2] => orange [3] => banana)

Функция поддерживается PHP 4, PHP 5


array_unique


Удаляет дублирующие значения в массиве.

Синтаксис:

array array_unique(array arr)

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

Пример использования функции array_unique():

<?php

$input = array("a" => "green", "red", "b" =>

"green", "blue", "red");

$result = array_unique($input);

print_r($result);

?>

Пример выведет следующее:

Array( [a] => green [0] => red [1] => blue)

Пример использования функции array_unique(): Сравнение типов данных

<?php

$input = array(4, "4", "3", 4, 3, "3");

$result = array_unique($input);

var_dump($result);

?>

Пример выведет следующее:

array(2) { [0] => int(4) [2] => string(1) "3"}

Функция поддерживается PHP 4 >= 4.0.1, PHP 5


array_chunk


Функция разбивает массив на части.

Синтаксис:

array array_chunk(array arr, int size [, bool preserve_keys])

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

Функция array_chunk() возвращает многомерный массив, индексами которого начинаются от 0 и до кол-ва полученных массивов, а значения - полученные в результате разбивки массивы.

Необязательный параметр preserve_keys указывает, стоит ли сохранять ключи исходного массива или нет. Если этот параметр равен false (значение по умолчанию), то индексы полученных массивов будут заданы числами начиная с нуля. Если же параметр равен true, то ключи исходного массива сохраняются.

Пример использования функции array_chunk():

$array = array("1-ый элемент",

"2-ой элемент",

"3-ий элемент",

"4-ый элемент",

"5-ый элемент");


print_r(array_chunk($array, 2));

print_r(array_chunk($array, 2, TRUE));


Пример выведет следующее:

Array( [0] => Array ( [0] => 1-ый элемент [1] => 2-ой элемент ) [1] => Array ( [0] => 3-ий элемент [1] => 4-ый элемент ) [2] => Array ( [0] => 5-ый элемент ))Array( [0] => Array ( [0] => 1-ый элемент [1] => 2-ой элемент ) [1] => Array ( [2] => 3-ий элемент [3] => 4-ый элемент ) [2] => Array ( [4] => 5-ый элемент ))

Функция поддерживается PHP 4 >= 4.2.0, PHP 5


array_fill


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

Синтаксис:

array array_fill(int start_index, int num, mixed value)

Функция array_fill() возвращает массив, который содержит значения, указанные в параметре value размерностью num начиная с элемента, указанного в параметре start_index.

Пример использования array_diff_uassoc():

<?php

$a = array_fill(5, 6, 'banana');

print_r($a);

?>

Пример выведет следующее:

Array( [5] => banana [6] => banana [7] => banana [8] => banana [9] => banana [10] => banana)

Функция поддерживается PHP 4 >= 4.2.0, PHP 5


array_filter


Функция применяет фильтр к массиву, используя пользовательскую функцию.

Синтаксис:

array array_filter(array input [, callback callback])

Функция array_filter() возвращает массив, который содержит значения, имеющиеся в массиве input отфильтрованные в соответсвтии с результатами работы пользовательской функции callback.

В случае, если исходный массив input является ассоциативным массивом, в результирующем массиве индексы сохраняются.

Пример использования функции array_filter():

<?php

function odd($var) {

return ($var % 2 == 1);

}


function even($var) {

return ($var % 2 == 0);

}


$array1 = array ("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);

$array2 = array (6, 7, 8, 9, 10, 11, 12);


echo "Нечетные :n";

print_r(array_filter($array1, "odd"));

echo "Четные :n";

print_r(array_filter($array2, "even"));

?>

Пример выведет следующее:

Нечетные :Array( [a] => 1 [c] => 3 [e] => 5)Четные :Array( [0] => 6 [2] => 8 [4] => 10 [6] => 12)

Стоит отметить, что вместо имени фильтрующей функции можно указать массив, который содержит ссылку на объект и имя метода.

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

Функция поддерживается PHP 4 >= 4.0.6, PHP 5


array_map


Применение пользовательской функции ко всем элементам указанных массивов.

Синтаксис:

array array_map(mixed callback, array arr1 [, array ...])

Функция array_map() возвращает массив, который содержит элементы всех указанных массивов после обработки пользовательской функцией callback.

Количество параметров, передаваемых пользовательской функции, должно совпадать с количеством массивов, переданных функции array_map().

Пример испольльзования функции array_map(): Обработка одного массива

<?php

function cube($n) {

return $n*$n*$n;

}


$a = array(1, 2, 3, 4, 5);

$b = array_map("cube", $a);

print_r($b);

?>

Приведенный пример выведет следующее:

Array( [0] => 1 [1] => 8 [2] => 27 [3] => 64 [4] => 125)

Пример испольльзования функции array_map(): Обработка нескольких массивов

<?php

function show_Spanish($n, $m) {

return "Число $n по-испански - $m";

}


function map_Spanish($n, $m) {

return array ($n => $m);

}


$a = array(1, 2, 3, 4, 5);

$b = array("uno", "dos", "tres", "cuatro", "cinco");


$c = array_map("show_Spanish", $a, $b);

print_r($c);


$d = array_map("map_Spanish", $a , $b);

print_r($d);

?>

Приведенный пример выведет следующее:

// printout of $cArray( [0] => Число 1 по-испански - uno [1] => Число 2 по-испански - dos [2] => Число 3 по-испански - tres [3] => Число 4 по-испански - cuatro [4] => Число 5 по-испански - cinco)// printout of $dArray( [0] => Array ( [1] => uno ) [1] => Array ( [2] => dos ) [2] => Array ( [3] => tres ) [3] => Array ( [4] => cuatro ) [4] => Array ( [5] => cinco ))

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

Следует отметить, что если вместо имени обрабатывающей функции задать null, то будет создан массив массивов.

Пример испольльзования функции array_map(): Создание массива массивов

<?php

$a = array(1, 2, 3, 4, 5);

$b = array("one", "two", "three", "four", "five");

$c = array("uno", "dos", "tres", "cuatro", "cinco");


$d = array_map(null, $a, $b, $c);

print_r($d);

?>

Приведенный пример выведет следующее:

Array( [0] => Array ( [0] => 1 [1] => one [2] => uno ) [1] => Array ( [0] => 2 [1] => two [2] => dos ) [2] => Array ( [0] => 3 [1] => three [2] => tres ) [3] => Array ( [0] => 4 [1] => four [2] => cuatro ) [4] => Array ( [0] => 5 [1] => five [2] => cinco ))

Функция поддерживается PHP 4 >= 4.0.6, PHP 5

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


list


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

Синтаксис:

void list ( mixed ...)

Наподобие array(), функция list() не совсем функция, а языковая конструкция. Она используется для формирования списка переменных.

Замечание: list() работает только с цифровыми индексами массива и принимает ключи элементов начиная с 0.

Пример использования функции list():

<?php

$info = array("coffee", "brown", "caffeine");


// Выведем все переменные

list($drink, $color, $power) = $info;

echo "$drink is $color and $power makes it special.n";


// Выведем первый и последний

list($drink, , $power) = $info;

echo "$drink has $power.n";


// Выведем только третий

list( , , $power) = $info;

echo "I need $power!n";

?>

Пример использования функции list():

<table>

<tr>

<th>Employee name</th>

<th>Salary</th>

</tr>


<?php


$result = mysql_query("SELECT id, name, salary FROM employees", $conn);

while (list($id, $name, $salary) = mysql_fetch_row($result)) {

echo " <tr>n" .

" <td><a href="info.php?id=$id">$name</a></td>n" .

" <td>$salary</td>n" .

" </tr>n";

}

?&gt;


</table>


Пример использования функции list(): Индексы

<?php

$info = array("coffee", "brown", "caffeine");


list($a[0], $a[1], $a[2]) = $info;


var_dump($a);

?>

array(3) { [2]=> string(8) "caffeine" [1]=> string(5) "brown" [0]=> string(6) "coffee"}

Функция поддерживается PHP 3, PHP 4, PHP 5


compact


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

Синтаксис:

array compact(mixed varname1 [, mixed $varname2, ...])

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

Число аргументов может быть неопределенное.

Если в аргументе указано имя несуществующей переменной, он пропускается. Действие этой функции противоположно функции extract().

Пример использования функции compact():

<?php

$city = "San Francisco";

$state = "CA";

$event = "SIGGRAPH"";


$location_vars = array("city", "state");


$result = compact("event", "nothing_here", $location_vars);

?>

В результате выполнения кода переменная $result имеет значение:

Array( [event] => SIGGRAPH [city] => San Francisco [state] => CA)

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

Пример использования функции compact():

<?php

$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")


Функция поддерживается PHP 4, PHP 5


extract


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

Синтаксис:

int extract (array var_array [, int extract_type [, string prefix]])

Функция extract() используется для импортирования значений массива в строку. Эта функция берет ассоциативный массив var_array, использую ключ элемента как имя переменной, а значение элемента как значение полученной переменной. Для создания переменных из пары ключ = значение можно также использовать необязательные параметры extract_type и prefix.

Замечание: начиная с PHP версии 4.0.5 эта функция возвращала количество извлеченных переменных.

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

Пример использования функции extract():

<?php


/* Предположим, что $var_array массив,

полученный при помощи функции wddx_deserialize */


$size = "large";

$var_array = array("color" => "blue",

"size" => ""medium",

"shape" => "sphere");

extract($var_array, EXTR_PREFIX_SAME, "wddx");


echo "$color, $size, $shape, $wddx_sizen";

?>

Пример выведет:

blue, large, sphere, medium

Здесь переменная $size не была переписана, т.к. мы указали параметр EXTR_PREFIX_SAME. Если указать EXTR_SKIP, тогда переменная $wddx_size даже не была бы создана. Если указать EXTR_OVERWRITE, то переменная $size имела бы значение "medium". Если EXTR_PREFIX_ALL - то в результате были бы созданы переменные $wddx_color, $wddx_size, и $wddx_shape.

Лучше всего использовать ассоциативные массивы. Массивы с цифровыми ключами не могут быть использованы в этой функции, если установлены флаги EXTR_PREFIX_ALL или EXTR_PREFIX_INVALID.

Функция поддерживается PHP 3 = 3.0.7, PHP 4, PHP 5

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


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, только с удаленными ведущими и концевыми пробельными символами. Под пробельными символами надо понимать и пробел.

Например, вызов trim(" testn ") вернет строку "test".

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


strchr


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

Синтаксис:

string strchr(string haystack, string needle)

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


strstr


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

Синтаксис:

string strstr(string haystack, string needle)

Функция strstr() возвращает уча




Справочник по PHP : White Cat

страницы в данном разделе 
Справочник по PHP : White Cat Синтаксис языка и операторы : White Cat
Выражения : White Cat Функции работы с данными : White Cat
Случайные числа : White Cat Перевод в различные системы счисления : White Cat
Функции повышенной точности BCMath : White Cat Функции GMP : White Cat
Значения функции GMP : White Cat Арифметика : White Cat
Математика : White Cat Работа с массивами : White Cat
Создание массива : White Cat Сортировка массивов : White Cat
Курсор массива : White Cat Ключи и значения : White Cat
Работа с несколькими массивами : White Cat Получение и удаление части массива : White Cat
Вставка / удаление элементов : White Cat Переменные и массивы : White Cat
Строковые функции : White Cat Поиск в тексте : White Cat
Функции сравнения : White Cat Форматирование и вывод строк : White Cat
Составление/разбиение строк : White Cat Работа с блоками текста : White Cat
Функции для преобразования символов : White Cat Функции изменения регистра : White Cat
Функции URL : White Cat Работа с бинарными данными : White Cat
Строковые суммы и хеш-функции : White Cat XML : White Cat
SimpleXML : White Cat Символические ссылки. Жесткие ссылки. : White Cat
Функции даты и времени : White Cat Логические функции определения типа переменной : White Cat
Функции переменных : White Cat Функции для работы с функциями : White Cat
Календарные функции : White Cat Случайные числа : White Cat
Перевод в различные системы счисления : White Cat Функции повышенной точности BCMath : White Cat
Функции GMP : White Cat Значения функции GMP : White Cat
Арифметика : White Cat Математика : White Cat
Случайные числа : White Cat Перевод в различные системы счисления : White Cat
Функции повышенной точности BCMath : White Cat Значения функции GMP : White Cat
Арифметика : White Cat Математика : White Cat
Значения функции GMP : White Cat Арифметика : White Cat
Математика : White Cat Создание массива : White Cat
Сортировка массивов : White Cat Курсор массива : White Cat
Ключи и значения : White Cat Работа с несколькими массивами : White Cat
Получение и удаление части массива : White Cat Вставка / удаление элементов : White Cat
Переменные и массивы : White Cat Создание массива : White Cat
Сортировка массивов : White Cat Курсор массива : White Cat
Ключи и значения : White Cat Работа с несколькими массивами : White Cat
Получение и удаление части массива : White Cat Вставка / удаление элементов : White Cat
Переменные и массивы : White Cat Поиск в тексте : White Cat
Функции сравнения : White Cat Форматирование и вывод строк : White Cat
Составление/разбиение строк : White Cat Работа с блоками текста : White Cat
Функции для преобразования символов : White Cat Функции изменения регистра : White Cat
Функции URL : White Cat Работа с бинарными данными : White Cat
Строковые суммы и хеш-функции : White Cat Поиск в тексте : White Cat
Функции сравнения : White Cat Форматирование и вывод строк : White Cat
Составление/разбиение строк : White Cat Работа с блоками текста : White Cat
Функции для преобразования символов : White Cat Функции изменения регистра : White Cat
Функции URL : White Cat Работа с бинарными данными : White Cat
Строковые суммы и хеш-функции : White Cat XML : White Cat
Символические ссылки. Жесткие ссылки. : White Cat Функции даты и времени : White Cat
Логические функции определения типа переменной : White Cat Функции переменных : White Cat
Функции для работы с функциями : White Cat Календарные функции : White Cat
Файлы и сети : White Cat Чтение и запись : White Cat
Функции для определения типов файлов : White Cat Определение параметров файла : White Cat
Функции для работы с именами файлов : White Cat Другие функции : White Cat
Функции для работы с каталогами : White Cat Манипулирование каталогами : White Cat
Работа с записями : White Cat FTP : White Cat
Работа с FTP-сервером : White Cat Работа с файлами : White Cat
Функции сжатия Bzip2 : White Cat Работа с файлами Bzip2 : White Cat
Функции IMAP : White Cat Сетевые функции : White Cat
Чтение и запись : White Cat Функции для определения типов файлов : White Cat
Определение параметров файла : White Cat Функции для работы с именами файлов : White Cat
Другие функции : White Cat Чтение и запись : White Cat
Функции для определения типов файлов : White Cat Определение параметров файла : White Cat
Функции для работы с именами файлов : White Cat Другие функции : White Cat
Функции для работы с каталогами : White Cat Работа с записями : White Cat
Манипулирование каталогами : White Cat Работа с записями : White Cat
FTP : White Cat Работа с файлами : White Cat
Работа с FTP-сервером : White Cat Работа с файлами : White Cat
Работа с файлами Bzip2 : White Cat Работа с файлами Bzip2 : White Cat
Функции IMAP : White Cat Функции Vmailmgr : White Cat
Сетевые функции : White Cat Управляющие функции : White Cat
Введение : White Cat Функции обработки ошибок : White Cat
Установка пользовательского обработчика ошибок : White Cat Управление сессиями : White Cat
Зачем нужны сессии.Механизм работы сессий. : White Cat Имя группы сессии : White Cat
Обзор обработчиков : White Cat Про сессии и Cookies : White Cat
Работа с WWW : White Cat Работа с Cookies : White Cat
Управление выводом : White Cat Функции управления выводом : White Cat
Управление исполнением сценария PHP : White Cat Функции управления сценарием : White Cat
Статус подключений : White Cat Дополнительные функции : White Cat
Функции запуска программ : White Cat Информационные функции : White Cat
Отслеживание и обработка ошибок : White Cat Функции обработки ошибок : White Cat
Установка пользовательского обработчика ошибок : White Cat Введение : White Cat
Функции обработки ошибок : White Cat Установка пользовательского обработчика ошибок : White Cat
Управление сессиями : White Cat Имя группы сессии : White Cat
Обзор обработчиков : White Cat Про сессии и Cookies : White Cat
Зачем нужны сессии.Механизм работы сессий. : White Cat Имя группы сессии : White Cat
Обзор обработчиков : White Cat Про сессии и Cookies : White Cat
Работа с Cookies : White Cat Работа с Cookies : White Cat
Функции управления выводом : White Cat Функции управления выводом : White Cat
Управление исполнением сценария PHP : White Cat Статус подключений : White Cat
Дополнительные функции : White Cat Функции управления сценарием : White Cat
Статус подключений : White Cat Дополнительные функции : White Cat
Функции запуска программ : White Cat Информационные функции : White Cat
Взаимодействие с базами данных : White Cat Работа с базами данных : White Cat
Обработка результатов запроса : White Cat База данных MySQL : White Cat
Обработка результатов запроса : White Cat Работа с базами данных : White Cat
Обработка результатов запроса : White Cat Графика : White Cat
Параметры изображения : White Cat Манипулирование изображениями : White Cat
Работа с цветом в формате RGB : White Cat Графические примитивы : White Cat
Работа с фиксированными шрифтами : White Cat Работа со шрифтами TrueType и PostScript Type 1 : White Cat
PDF-документы : White Cat Работа с текстом : White Cat
Установка масштаба и системы координат : White Cat Черчение и заполнение фигур : White Cat
Размещение рисунков : White Cat Работа с изображениями и библиотека GD : White Cat
Манипулирование изображениями : White Cat Работа с цветом в формате RGB : White Cat
Графические примитивы : White Cat Работа с фиксированными шрифтами : White Cat
Работа со шрифтами TrueType и PostScript Type 1 : White Cat Параметры изображения : White Cat
Манипулирование изображениями : White Cat Работа с цветом в формате RGB : White Cat
Графические примитивы : White Cat Работа с фиксированными шрифтами : White Cat
Работа со шрифтами TrueType и PostScript Type 1 : White Cat Работа с текстом : White Cat
Установка масштаба и системы координат : White Cat Черчение и заполнение фигур : White Cat
Размещение рисунков : White Cat Открытие документа : White Cat
Работа с текстом : White Cat Установка масштаба и системы координат : White Cat
Черчение и заполнение фигур : White Cat Размещение рисунков : White Cat
Приложения : White Cat MIME-типы файлов : White Cat
Переменные окружения : White Cat MIME-типы файлов : White Cat
Создание голосования на PHP : White Cat Отправка писем при помощи PHP : White Cat
Из PHP в Excel: работа с COM-объектами : White Cat Создание голосования на PHP : White Cat
Отправка писем при помощи PHP : White Cat Из PHP в Excel: работа с COM-объектами : White Cat

Разделы
Околокомпьютерная литература (375)
Программирование (102)
Программы (75)
ОС и Сети (49)
Интернет (29)
Аппаратное обеспечение (16)
Базы данных (6)


Microsoft Office Журнал Компьютерра № 32 от 5 сентября 2006 года Журнал Компьютерра № 34 от 18 сентября 2006 года