Сделай Сам Свою Работу на 5

Count() - функция подсчёта элементов массива





 

int count ( mixed var [, int mode] )

 

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

Для объектов count() возвращает количество нестатических свойств, не принимая во внимание видимость.

Если var не является массивом или объектом, реализующим интерфейс Countable, будет возвращено 1. За одним исключением: если var - NULL, то будет возвращён 0.

Если дополнительный параметр mode установлен в COUNT_RECURSIVE (или 1), count() будет считать количество элементов массива рекурсивно. Это особенно полезно для подсчёта всех элементов многомерных массивов. Предустановленное значение параметра mode - 0. count() не обнаруживает бесконечную рекурсию.

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

 

Пример 3.9.1.1:

 

<?

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

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

 

// рекурсивный count

echo count($food, COUNT_RECURSIVE); // output 8



 

// обычный count

echo count($food); // output 2

 

?>

 

In_array() - функция поиска элемента в массиве

 

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

 

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

 

Ищет в haystack значение needle и возвращает TRUE в случае удачи, FALSE в противном случае.

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

 

Пример 3.9.2.1:

 

<?

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

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

echo "Got Irix";

}

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

echo "Got mac";

}

?>

 

Второго совпадения не будет, потому что in_array() регистрозависима, таким образом, программа выведет: Got Irix

 

 

Функции сортировки массивов и работы с элементами массовов

 

Sort() – функция сортировки массива по возрастанию

 

bool sort ( array &array [, int sort_flags] )

 

Эта функция сортирует массив. После завершения работы функции элементы массива будут расположены в порядке возрастания. Эта функция назначает новые ключи для элементов array. Все ранее назначенные значения ключей будут удалены, т.е. переназначены.



 

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

 

Пример 3.10.1.1:

 

<?

 

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

sort($fruits);

reset($fruits);

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

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

}

 

?>

 

Результат выполнения данного примера:

 

fruits[0] = apple

fruits[1] = banana

fruits[2] = lemon

fruits[3] = orange

 

Дополнительный второй параметр sort_flags можно использовать для изменения поведения сортировки, используя следующие значения:

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

· SORT_REGULAR - сравнивать элементы нормально (не изменять типы)

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

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

· SORT_LOCALE_STRING - сравнивать элементы как строки, основываясь на текущей локали (добавлено в PHP 5.0.2)

 

Будьте осторожны при сортировке массивов, содержащих элементы разных типов, так как в этом случае результат работы функции sort() может быть непредсказуемым.

 

 

Rsort() – сортировка массива по убыванию

 

bool rsort ( array &array [, int sort_flags] )

 

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

 

Asort() – сортировка ассоциативного массива по возрастанию

 

bool asort ( array &array [, int sort_flags] )

 

Эта функция сортирует массив таким образом, что сохраняются отношения между ключами и значениями. Она полезна, в основном, при сортировке ассоциативных массивов, когда важно сохранить отношение ключ => значение.

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.



 

Пример 3.10.3.1:

 

<?

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

asort($fruits);

reset($fruits);

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

echo "$key = $val\n";

}

?>

 

Результат выполнения данного примера:

 

c = apple

b = banana

d = lemon

a = orange

 

Вы можете изменить поведение сортировки, используя дополнительный параметр sort_flags, подробнее см. sort().

 

 

Arsort() – сортировка ассоциативного массива по убыванию

 

bool arsort ( array &array [, int sort_flags] )

 

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

 

Ksort() – сортировка массива по возрастанию ключей

 

bool ksort ( array &array [, int sort_flags] )

 

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

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

 

Пример 3.10.5.1:

 

<?

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

ksort($fruits);

reset($fruits);

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

echo "$key = $val

";

}

?>

 

Результат выполнения данного примера:

 

a = orange

b = banana

c = apple

d = lemon

 

Вы можете изменить поведение сортировки, используя дополнительный параметр sort_flags, подробнее см. sort().

 

 

Krsort() – сортировка массива по убыванию индексов

 

bool krsort ( array &array [, int sort_flags] )

 

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

 

 

Array_reverse() – расстановка элементов массива в обратном порядке

 

array array_reverse ( array array [, bool preserve_keys] )

 

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

 

Пример 3.10.7.1:

 

<?

$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

)

 

 

Shuffle() – перемешивание элементов массива случайным образом

 

bool shuffle ( array &array )

 

Перемещает элементы массива в случайном порядке.

 

 

3.10.9. natsort() – "естественная" сортировка массива

 

bool natsort ( array &array )

 

Эта функция реализует алгоритм сортировки, при котором порядок буквенно-цифровых строк будет привычным для человека. Такой алгоритм называется "natural ordering". Отличие алгоритма "natural ordering" от обычных алгоритмов сортировки, применяемых, например, функцией sort() показывает нижеприведённый пример:

 

Пример 3.10.9.1:

 

<?

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

 

sort($array1);

echo "Обычная сортировка";

print_r($array1);

 

natsort($array2);

echo "Natural order сортировка";

print_r($array2);

?>

 

Результат выполнения данного примера:

 

Обычная сортировка

Array

(

[0] => img1.png

[1] => img10.png

[2] => img12.png

[3] => img2.png

)

 

Natural order сортировка

Array

(

[3] => img1.png

[2] => img2.png

[1] => img10.png

[0] => img12.png

)

 

 

Функции работы с курсором массива

 

Функция reset()

 

mixed reset ( array &array )

 

Перемещает внутренний указатель array к его первому элементу и возвращает значение первого элемента массива или FALSE если массив пуст.

 

Пример 3.11.1.1:

 

<?

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

 

// первоначально указатель указывает на первый элемент

echo current($array) . "<br />"; // "шаг один"

 

// пропускаем два шага

next($array);

next($array);

echo current($array) . "<br />"; // "шаг три"

 

// сбрасываем указатель, тем самым возвращаемся к первому шагу

reset($array);

echo current($array) . "<br />"; // "шаг один"

 

?>

 

 

Функция end()

 

mixed end ( array &array )

 

Устанавливает внутренний указатель array на последний элемент и возвращает его значение.

 

Пример 3.11.2.1:

 

<?

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

echo end($fruits); // cranberry

?>

 

 

Функция next()

 

mixed next ( array &array )

 

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

next() ведёт себя подобно current(), но с одним отличием. Перед тем, как возвратить значение элемента массива, эта функция передвигает его внутренний указатель на одну позицию вперёд. Другими словами, она возвращает следующий элемент массива и сдвигает его внутренний указатель на одну позицию. Если при продвижении внутренний указатель массива выйдет за предел списка элементов, next() возвратит FALSE. См. пример 3.11.1.1.

 

Функция prev()

 

mixed prev ( array &array )

 

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

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

prev() ведёт себя подобно next(), за исключением того, что она передвигает внутренний указатель массива на одну позицию назад, а не вперёд.

 

 

Функция current()

 

mixed current ( array &array )

 

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

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

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

 

Пример 3.11.5.1:

 

<?

$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';

?>

 

Функция key()

 

mixed key ( array &array )

 

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

 

Пример 3.11.6.1:

 

<?

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

}

?>

 

Функция each()

 

array each ( array &array )

 

Возвращает текущую пару ключ/значение из массива array и смещает его указатель. Эта пара возвращается в виде массива из четырёх элементов, со следующими ключами: 0, 1, key и value. Элементы 0 и key содержат ключ элемента массива, а элементы 1 и value содержат его значение.

Если внутренний указатель массива указывает на его конец, each() возвратит FALSE.

 

Пример 3.11.7.1:

 

<?

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

$bar = each($foo);

print_r($bar);

?>

 

$bar теперь содержит следующие пары ключ/значение:

 

Array

(

[1] => bob

[value] => bob

[0] => 0

[key] => 0

)

 

Пример 3.11.7.2:

 

<?

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

$bar = each($foo);

print_r($bar);

?>

 

$bar теперь содержит следующие пары ключ/значение:

 

Array

(

[1] => Bob

[value] => Bob

[0] => Robert

[key] => Robert

)

 

each() обычно используется совместно с list() для обхода массива, как в этом примере.

Пример 3.11.7.4:

 

<?

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

 

reset($fruit);

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

echo "$key => $val";

}

?>

 

Результат выполнения данного примера:

 

a => apple

b => banana

c => cranberry

 

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

 

Функция list()

 

void list ( mixed varname, mixed ... )

 

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

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

 

Пример 3.12.1:

 

<?

 

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

 

// Составить список всех переменных

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

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

 

// Составить список только некоторых из них

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

echo "$drink has $power.";

 

// Или только третья

list( , , $power) = $info;

echo "I need $power!";

 

?>

 

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

 

Пример 3.12.2:

 

<?

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

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

var_dump($a);

?>

 

Выведет (сравните порядок исходных элементов с порядком, в в котором они были перезаписаны функцией list()):

 

array(3) {

[2]=>

string(8) "caffeine"

[1]=>

string(5) "brown"

[0]=>

string(6) "coffee"

}

 

Функция array_walk()

 

bool array_walk ( array &array, callback funcname [, mixed userdata] )

 

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Применяет пользовательскую функцию funcname к каждому элементу массива array. Обычно у функции funcname два параметра. Значение массива array в качестве первого параметра, и ключ/индекс в качестве второго. Если указан дополнительный параметр userdata, он будет передан в качестве третьего параметра в функцию обратного вызова funcname.

Если в функцию funcname должно быть передано больше параметров, чем передано на самом деле, ошибка уровня E_WARNING будет генерироваться каждый раз, как array_walk() будет вызывать funcname. Эти предупреждения могут быть подавлены добавлением оператора управления ошибками PHP @ в вызов array_walk(), или использованием error_reporting().

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

array_walk() не изменяет внутренний указатель массива array. Для того чтобы сбросить указатель, используйте функцию reset().

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

 

Пример 3.13.1:

 

<?

$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. lemon

a. orange

b. banana

c. apple

 

... and after:

 

d. fruit: lemon

a. fruit: orange

b. fruit: banana

c. fruit: apple

 

 

Тема 4. Функции в PHP

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.