Поиск в массиве и извлечение элементов из массива

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

Функции работы с массивами в PHP можно разделить на следующие категории:

· функции поиска в массиве и извлечение элементов из массива;

· функции итерации(просмотра) элементов массива;

· функции вставки, удаление и замена элементов в массиве;

· функции операций с ключами и значениями элементов в массиве;

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

Поиск в массиве и извлечение элементов из массива обеспечивают следующие функции

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

mixed array_search(mixed needle,

array haystack [, bool strict])

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

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

В следующем фрагменте программы проверяется наличие вводимого с клавиатуры числа в массиве:

// Объявление массива

$a = array(3, 7, 9, 12, 18, 43, 54, 56);

// Ввод числа для поиска в массиве

echo "\nEnter value: ";

$x = (int)trim(fgets(STDIN));

// Поиск в массиве

$isFound = in_array($x, $a);

// Вывод результата поиска

echo "\nValue $x is ", ($isFound==1)?'':'not ',

"found in \$a";

Выводы этого фрагмента могут иметь следующий вид:

Кроме того, для поиска и извлечения элементов массива по заданным критериям можно использовать следующие функции:

array array_diff(array array1,

array array2 [, array...])

array array_intersect(array array1,

array array2 [, array...])

array array_diff_assoc(array array1,

array array2 [, array...])

array array_intersect_assoc(array array1,

array array2 [, array...])

array array_slice(array array, int offset [, int length])

mixed array_rand(array input [, int num_req])

array array_filter(array input [, callback function])

Функции array_diff() и array_intersect() возвращают массив соответственно элементов, которые есть только в первом из массивов – array1 или элементов, которые есть во всех массивах – array1, array2,....

Функции array_diff_assoc() и array_intersect_assoc() делают то же самое, но с дополнительной проверкой на равенство ключей массивов.

Функция array_slice() вырезает кусок из массива, начиная с offset длиной length (если параметр length не задан, то вырезается кусок до конца массива).

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

И, наконец, функция array_filter() фильтрует массив в соответствии с функцией, заданной во втором параметре.

Пример 4.6.98. Использование функций array_diff() и array_intersect():

В следующем фрагменте программы для двух массивов $a1 и $a2 определяется, какие элементы есть только в первом массиве, какие элементы есть только во втором массиве и какие элементы есть в обоих массивах:

// Первый массив

$a1 = array(3, 9, 12, 18, 43, 54);

// Второй массив

$a2 = array(5, 12, 32, 42, 43);

// Получение и вывод массива элементов,

// которые есть только в первом массиве

$b1_1 = array_diff($a1, $a2);

print "\nOnly in \$a1:";

foreach ($b1_1 as $value)

print " $value";

// Получение и вывод массива элементов,

// которые есть только во втором массиве

$b1_2 = array_diff($a2, $a1);

print "\nOnly in \$a2: ";

foreach ($b1_2 as $value)

print " $value";

// Получение и вывод массива элементов,

// которые есть в обоих массивах

$b2 = array_intersect($a1, $a2);

print "\nIn \$a1 and \$a2: ";

foreach ($b2 as $value)

print " $value";

Вывод фрагмента имеет следующий вид:

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

В следующем фрагменте программы создается массив $b, в котором содержатся только элементы с целыми значениями массива $a:

// Функция фильтрации целого числа

function integer_value($var)

{

return (is_integer($var) == 1);

}

// Массив чисел

$a = array(3.5, 9, 12.0, 18, 23.44, 54, 73.02);

// Фильтрация массива

$b = array_filter($a, "integer_value");

// Вывод массива

print "\n\$b:";

foreach ($b as $value)

print " $value";

Вывод фрагмента имеет следующий вид:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: