Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
- Учебник по PHP (2004).pdf
Скачиваний:
132
Добавлен:
12.04.2015
Размер:
2 Мб
Скачать
☆

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

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

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

//$ar1 = array("10", "a", 100, 100);

//$ar2 = array(1, 1, "2", 4);

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

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

$ar[1], $SORT_NUMERIC, SORT_DESC);

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

Работа с массивами : Курсор массива

reset

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

Синтаксис :

mixed reset(array arr);

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

end

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

Синтаксис :

mixed end(array arr);

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

next

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

Синтаксис :

mixed next(array arr);

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

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

prev

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

Синтаксис :

mixed prev(array arr);

Функция prev() возвращает значение элемента, на котором в данный момент

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

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

current

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

Синтаксис :

mixed current(array arr);

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

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

pos

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

Синтаксис :

mixed pos(array arr);

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

key

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

Синтаксис :

mixed key(array arr);

each

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

Синтаксис :

array each(array arr);

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

[0]=> индекс

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

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

$foo = array("bob", "fred", "jussi", "joini", "egon", "marliese"); $bar = each($foo);

// теперь $bar = (0=>0, 1=>"bob", key=>0, value=>"bob")

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

reset($HTTP_POST_VARS);

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

}

array_walk

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

Синтаксис :

int array_walk(array arr string func, mixed userdata);

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

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

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

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

$v = array("d"=>"A1", "a"=>"B2", "b"=>"C3", "c"=>"D4"); function test_alter(&$item1, $key, $prefix) { // по ссылке

$item1 = "$prefix $item1"; };

function test_print($item2, $key) { echo "$key. $item2<BR>";

};

array_walk($v, "test_print"); reset($v);

array_walk($v, "test_alter"); reset($v);

array_walk($v, "test_print");

Работа с массивами : Ключи и значения

array_flip

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

Синтаксис :

array array_flip(array arr)

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

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

$A = array_flip($A);

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

array_keys

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

Синтаксис :

list array_keys(array arr [,mixed search_value])

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

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

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

array_values

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

Синтаксис :

list array_values(array arr)

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

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

// возвратит array("XL", "gold")

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

in_array

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

Синтаксис :

bool in_array(mixed val, array arr)

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

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

array_count_values

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

Синтаксис :

array array_count_values(array arr)

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

$LIst = array(1, "hello", 1, "world", "hello"); array_count_values($array);

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

sizeof

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

Синтаксис :