Функции для работы со массивами в PHP
Следующие функции для работы с массивами являются частью ядра PHP, поэтому вы можете использовать эти функции в своих скриптах без дополнительной установки.
Функция | Описание |
---|---|
array() | Создает массив |
array_change_key_case() | Изменяет регистр всех ключей в массиве (нижний или верхний регистр) |
array_chunk() | Разбивает массив на части массивов |
array_column() | Возвращает значения из одного столбца во входном массиве |
array_combine() | Создает массив, используя один массив для ключей и другой для его значений |
array_count_values() | Подсчитывает все значения массива |
array_diff() | Сравнивает значения массивов, и возвращает различия |
array_diff_assoc() | Сравнивает массивы ключей и значений, и возвращает различия |
array_diff_key() | Сравнивает ключи массивов, и возвращает различия |
array_diff_uassoc() | Сравнивает массивы ключей и значений, используя определяемую пользователем функцию сравнения ключей, и возвращает различия |
array_diff_ukey() | Сравнивает ключи массива, используя определяемую пользователем функцию сравнения ключей, и возвращает различия |
array_fill() | Заполняет массив значениями |
array_fill_keys() | Заполняет массив значениями, указав ключи |
array_filter() | Фильтрует элементы массива с помощью пользовательской функции |
array_flip() | Переворачивает или меняет все ключи на связанные с ними значения в массиве |
array_intersect() | Сравнивает значения массивов, и возвращает совпадения |
array_intersect_assoc() | Сравнивает массивы ключей и значений, и возвращает совпадения |
array_intersect_key() | Сравнивает ключи массивов, и возвращает совпадения |
array_intersect_uassoc() | Сравнивает массивы ключей и значений, используя определяемую пользователем функцию сравнения ключей, и возвращает совпадения |
array_intersect_ukey() | Сравнивает ключи массивов, используя определенную пользователем функцию сравнения ключей, и возвращает совпадения |
array_keys() | Возвращает все ключи или подмножество ключей массива |
array_key_exists() | Проверяет, существует ли указанный ключ в массиве |
array_map() | Отправляет элементы данных массивов пользовательской функции, которая может использовать их для возврата новых значений |
array_merge() | Объединяет один или несколько массивов в один массив |
array_merge_recursive() | Рекурсивно объединяет один или несколько массивов в один |
array_multisort() | Сортирует множественные или многомерные массивы |
array_pad() | Вставляет указанное количество элементов с указанным значением в массив |
array_pop() | Удаляет последний элемент массива, и возвращает значение удаленного элемента |
array_product() | Вычисляет произведение значений в массиве |
array_push() | Вставляет один или несколько элементов в конец массива |
array_rand() | Возвращает один или несколько случайных ключей из массива |
array_reduce() | Уменьшает массив до одного значения с помощью определяемой пользователем функции обратного вызова |
array_replace() | Заменяет значения первого массива значениями из следующих массивов |
array_replace_recursive() | Рекурсивно заменяет значения первого массива значениями из следующих массивов |
array_reverse() | Возвращает массив с элементами в обратном порядке |
array_search() | Ищет в массиве заданное значение и возвращает соответствующий ключ в случае успеха |
array_shift() | Удаляет первый элемент из массива, и возвращает значение удаленного элемента |
array_slice() | Извлекает фрагмент из массива |
array_splice() | Удаляет часть массива и заменяет на что-нибудь другое |
array_sum() | Вычисляет сумму значений в массиве |
array_udiff() | Сравнивает только значения массивов, используя определенную пользователем функцию обратного вызова сравнения, и возвращает различия |
array_udiff_assoc() | Сравнивает значения массивов с помощью определяемой пользователем функции обратного вызова сравнения, с дополнительным сравнением ключей с использованием внутренней (или встроенной) функции, и возвращает различия |
array_udiff_uassoc() | Сравнивает ключи и значения массивов, используя две отдельные пользовательские функции обратного вызова сравнения, и возвращает различия |
array_uintersect() | Сравнивает только значения массивов, используя определенную пользователем функцию обратного вызова сравнения, и возвращает совпадения |
array_uintersect_assoc() | Сравнивает значения массивов с помощью определяемой пользователем функции обратного вызова сравнения, в то время как использует внутреннюю (или встроенную) функцию для сравнения ключа, и возвращает совпадения |
array_uintersect_uassoc() | Сравнивает ключи и значения массивов, используя две отдельные пользовательские функции обратного вызова сравнения, и возвращает совпадения |
array_unique() | Удаляет повторяющиеся значения из массива |
array_unshift() | Добавляет один или несколько элементов в начало массива |
array_values() | Возвращает все значения массива |
array_walk() | Применяет пользовательскую функцию к каждому элементу массива |
array_walk_recursive() | Рекурсивно применяет пользовательскую функцию к каждому элементу массива |
asort() | Сортирует ассоциативный массив по значению в возрастающем порядке |
arsort() | Сортирует ассоциативный массив по значению в обратном или убывающем порядке |
compact() | Создает массив, содержащий переменные и их значения |
count() | Подсчитывает все элементы в массиве |
current() | Возвращает текущий элемент в массив |
each() | Возвращает текущую пару ключ и значение из массива и перемещает курсор массива |
end() | Устанавливает внутренний указатель массива на его последний элемент |
extract() | Импортирует переменные в текущую таблицу символов из массива |
in_array() | Проверяет, существует ли значение в массиве |
key_exists() | Проверяет, существует ли указанный ключ в массиве. Псевдоним array_key_exists() |
key() | Получает ключ из массива |
ksort() | Сортирует ассоциативный массив по ключу в порядке возрастания |
krsort() | Сортирует ассоциативный массив по ключу в обратном или убывающем порядке |
list() | Назначает переменные, как если бы они были массивом |
natcasesort() | Сортируем массив с использованием алгоритма «естественного порядка» без учета регистра |
natsort() | Сортируем массив с использованием алгоритма «естественного порядка» |
next() | Перемещает внутренний указатель массива на следующий |
pos() | Возвращает текущий элемент в массив. Псевдоним current() |
prev() | Перемещает внутренний указатель массива на предыдущий |
range() | Создает массив, содержащий диапазон элементов |
reset() | Устанавливает внутренний указатель массива на его первый элемент |
rsort() | Сортирует массив в обратном или убывающем порядке |
shuffle() | Перемешивает массив |
sizeof() | Подсчитывает все элементы в массиве. Псевдоним count() |
sort() | Сортирует массив в порядке возрастания |
uasort() | Сортирует массив с использованием пользовательской функции сравнения и поддержки ассоциацивного индекса |
uksort() | Сортировка массива по ключам с помощью пользовательской функции сравнения |
usort() | Сортировка массива по значениям с помощью пользовательской функции сравнения |
Насколько публикация полезна?
Нажмите на звезду, чтобы оценить!
array_product
array_product() возвращает произведение значений массива.
Список параметров
Возвращаемые значения
Возвращает произведение как тип integer или float.
Примеры
Пример #1 Примеры использования array_product()
$a = array( 2 , 4 , 6 , 8 );
echo «product(a) color: #007700″>. array_product ( $a ) . «\n» ;
echo «product(array()) color: #007700″>. array_product (array()) . «\n» ;
Результат выполнения данного примера:
product(a) = 384 product(array()) = 1
User Contributed Notes 7 notes
This function can be used to test if all values in an array of booleans are TRUE.
function outbool ( $test )
return (bool) $test ;
>
$check [] = outbool ( TRUE );
$check [] = outbool ( 1 );
$check [] = outbool ( FALSE );
$check [] = outbool ( 0 );
$result = (bool) array_product ( $check );
// $result is set to FALSE because only two of the four values evaluated to TRUE
?>
The above is equivalent to:
$check1 = outbool ( TRUE );
$check2 = outbool ( 1 );
$check3 = outbool ( FALSE );
$check4 = outbool ( 0 );
?>
This use of array_product is especially useful when testing an indefinite number of booleans and is easy to construct in a loop.
Here’s how you can find a factorial of a any given number with help of range and array_product functions.
function factorial($num) return array_product(range(1, $num));
>
Just a little correction for Andre D’s answer: «(bool) array_product($array);» is equivalent with the conjunction of each array elements of $array, UNLESS the provided array is empty in which case array_product() will return 1, which will translate to boolean TRUE.
To mitigate this, you should expand the function with an additional check:
You can use array_product() to calculate the geometric mean of an array of numbers:
$a = [ 1 , 10 , 100 ];
$geom_avg = pow ( array_product ( $a ), 1 / count ( $a ));
// = 9.999999999999998 ≈ 10
?>
You can use array_product to calculate the factorial of n:
function factorial ( $n )
<
if( $n < 1 ) $n = 1 ;
return array_product ( range ( 1 , $n ));
>
?>
If you need the factorial without having array_product available, here is one:
function factorial ( $n )
<
if( $n < 1 ) $n = 1 ;
for( $p ++; $n ; ) $p *= $n —;
return $p ;
>
?>
array_product() can be used to implement a simple boolean AND search
$args = array( ‘first_name’ => ‘Bill’ , ‘last_name’ => ‘Buzzard’ );
$values [] = array( ‘first_name’ => ‘Brenda’ , ‘last_name’ => ‘Buzzard’ );
$values [] = array( ‘first_name’ => ‘Victor’ , ‘last_name’ => ‘Vulture’ );
$values [] = array( ‘first_name’ => ‘Bill’ , ‘last_name’ => ‘Blue Jay’ );
$values [] = array( ‘first_name’ => ‘Bill’ , ‘last_name’ => ‘Buzzard’ );
$result = search_for ( $values , $args );
var_dump ( $result );exit;
function search_for ( $array , $args ) $results = array();
foreach ( $array as $row ) $found = false ;
$hits = array();
foreach ( $row as $k => $v ) if ( array_key_exists ( $k , $args )) $hits [ $k ] = ( $args [ $k ] == $v );
>
$found = array_product ( $hits );
if (! in_array ( $row , $results ) && true == $found ) $results [] = $row ;
>
array (size=1)
0 =>
array (size=2)
‘first_name’ => string ‘Bill’ (length=4)
‘last_name’ => string ‘Buzzard’ (length=7)
An observation about the _use_ of array_product with primes:
$a=$arrayOfSomePrimes=(2,3,11);
// 2 being the first prime (these days)
$codeNum=array_product($a); // gives 66 (== 2*3*11)
echo «unique product(\$a) = » . array_product($a) . «\n»;
The 66 can (only) be split into its original primes,
which can be transformed into their place in the row of primes (2,3,5,7,11,13,17,19. ) giving (1,2,3,4,5,6,7,8. )
The 66 gives the places in the row of primes. The number «66» is unique as a code for
So you can define the combination of table-columns in «66». The bigger the combination, the more efficient in memory/transmission, the less in calculation.
- Функции для работы с массивами
- array_change_key_case
- array_chunk
- array_column
- array_combine
- array_count_values
- array_diff_assoc
- array_diff_key
- array_diff_uassoc
- array_diff_ukey
- array_diff
- array_fill_keys
- array_fill
- array_filter
- array_flip
- array_intersect_assoc
- array_intersect_key
- array_intersect_uassoc
- array_intersect_ukey
- array_intersect
- array_is_list
- array_key_exists
- array_key_first
- array_key_last
- array_keys
- array_map
- array_merge_recursive
- array_merge
- array_multisort
- array_pad
- array_pop
- array_product
- array_push
- array_rand
- array_reduce
- array_replace_recursive
- array_replace
- array_reverse
- array_search
- array_shift
- array_slice
- array_splice
- array_sum
- array_udiff_assoc
- array_udiff_uassoc
- array_udiff
- array_uintersect_assoc
- array_uintersect_uassoc
- array_uintersect
- array_unique
- array_unshift
- array_values
- array_walk_recursive
- array_walk
- array
- arsort
- asort
- compact
- count
- current
- end
- extract
- in_array
- key_exists
- key
- krsort
- ksort
- list
- natcasesort
- natsort
- next
- pos
- prev
- range
- reset
- rsort
- shuffle
- sizeof
- sort
- uasort
- uksort
- usort
- each