Функции
count($arr, $mode)
- Подсчитывает количество элементов массива или что-то в объекте.
- Если необязательный параметр mode установлен в COUNT_RECURSIVE (или 1), count() будет рекурсивно подсчитывать количество элементов массива. Это особенно полезно для подсчёта всех элементов многомерных массивов.
- Если передан не массив, то вернет 1.
array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] )
- возвращает последовательность элементов массива array, определённую параметрами offset и length.
- Если в эту функцию передан отрицательный параметр length, последовательность остановится на указанном расстоянии от конца массива.
- Если offset отрицателен, последовательность начнётся на расстоянии указанном расстоянии от конца.
- умолчанию array_slice() сбрасывает ключи массива. Вы можете переопределить это поведение, установив параметр preserve_keys в TRUE.
<?php
$input = array("a", "b", "c", "d", "e");
$output = array_slice($input, 2); // возвращает "c", "d", и "e"
$output = array_slice($input, -2, 1); // возвращает "d"
$output = array_slice($input, 0, 3); // возвращает "a", "b", и "c"
array_splice ( array &$input , int $offset [, int $length = 0 [, mixed $replacement ]] )
- Удаляет length элементов, расположенных на расстоянии offset из массива input, и заменяет их элементами массива replacement, если он передан в качестве параметра.
- Обратите внимание, что числовые ключи в массиве input не сохраняются.
- Если параметр offset положителен, будут удалены элементы, находящиеся на расстоянии offset от начала input. Если offset отрицателен, будут удалены элементы, находящиеся на расстоянии offset от конца input.
- Если параметр length опущен, будут удалены все элементы начиная с позиции offset и до конца массива. Если length указан и он положителен, то будет удалено именно столько элементов. Если же параметр length отрицателен, то конец удаляемой части элементов будет отстоять на это количество от конца массива. Совет: для того, чтобы удалить все элементы массива, начиная с позиции offset до конца массива, в то время как указан параметр replacement, используйте count($input) в качестве параметра length.
- Если offset равен нулю и указан replacement, то replacement будет вставлен в массив.
<?php
$input = array("red", "green", "blue", "yellow");
array_splice($input, 2);
// $input теперь array("red", "green")
$input = array("red", "green", "blue", "yellow");
array_splice($input, 1, -1);
// $input теперь array("red", "yellow")
$input = array("red", "green", "blue", "yellow");
array_splice($input, 1, count($input), "orange");
// $input теперь array("red", "orange")
$input = array("red", "green", "blue", "yellow");
array_splice($input, -1, 1, array("black", "maroon"));
// $input теперь array("red", "green", "blue", "black", "maroon")
$input = array("red", "green", "blue", "yellow");
array_splice($input, 3, 0, "purple");
// $input теперь array("red", "green", "blue", "purple", "yellow");
?>
array_merge ( array $array1 , array $array2, … )
- Сливает элементы одного или большего количества массивов таким образом, что значения одного массива присоединяются к концу предыдущего. Результатом работы функции является новый массив.
- Если входные массивы имеют одинаковые строковые ключи, тогда каждое последующее значение будет заменять предыдущее. Однако, если массивы имеют одинаковые числовые ключи, значение, упомянутое последним, не заменит исходное значение, а будет добавлено в конец массива.
- В результирующем массиве значения исходного массива с числовыми ключами будут перенумерованы в возрастающем порядке, начиная с нуля.
<?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_recursive ( array $array1 , array $array2, … )
- Рекурсивное слияние двух или более массивов.
- Если входные массивы имеют одинаковые строковые ключи, то значения этих ключей сливаются в массив, и это делается рекурсивно, так что если одно из значений является массивом, то функция сливает его с соответствующим значением в другом массиве.
- Если массивы имеют одинаковые числовые ключи, значение, упомянутое последним, не заменит исходное значение, а будет добавлено в конец массива.
<?php
$ar1 = array("color" => array("favorite" => "red"), 5);
$ar2 = array(10, "color" => array("favorite" => "green", "blue"));
$result = array_merge_recursive($ar1, $ar2);
print_r($result);
/*
Array
(
[color] => Array
(
[favorite] => Array
(
[0] => red
[1] => green
)
[0] => blue
)
[0] => 5
[1] => 10
)
*/
?>
array_map ( callable func() name[‘strtoupper’] , array $array1, array $array2, … )
- Возвращает массив, содержащий элементы array1 после их обработки callback-функцией. Количество параметров, передаваемых callback-функции, должно совпадать с количеством массивов, переданным функции 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_replace ( array $array1 , array $array2, … )
- Замещает значения массива array1 значениями с такими же ключами из других переданных массивов.
- Если ключ из первого массива присутствует во втором массиве, его значение заменяется на значение из второго массива.
- Если ключ есть во втором массиве, но отсутствует в первом - он будет создан в первом массиве.
- Если ключ присутствует только в первом массиве, то сохранится как есть.
- Если для замены передано несколько массивов, они будут обработаны в порядке передачи и более поздние массивы будут перезаписывать значения из предыдущих.
- array_replace() не рекурсивная: значения первого массива будут заменены вне зависимости от типа значений второго массива, даже если это будут вложенные массивы.
<?php
$base = array("orange", "banana", "apple", "raspberry");
$replacements = array(0 => "pineapple", 4 => "cherry");
$replacements2 = array(0 => "grape");
$basket = array_replace($base, $replacements, $replacements2);
print_r($basket);
/*
Array
(
[0] => grape
[1] => banana
[2] => apple
[3] => raspberry
[4] => cherry
)
*/
array_replace_recursive ( array $array1 , array $array2, … )
- Тоже что и array_replace() только рекурсивно
array_combine ( array $keys , array $values )
- Создает array, используя значения массива keys в качестве ключей и значения массива values в качестве соответствующих значений.
- Возвращает скомбинированный array, либо FALSE, если количество элементов в массивах не совпадает.
<?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
)
*/
?>
array_unique ( array $array1 , $sort_flags )
- Принимает входной array и возвращает новый массив без повторяющихся значений.
- Ключи сохранятся
- Замечание: Два элемента считаются одинаковыми в том и только в том случае, если (string) $elem1 === (string) $elem2. Другими словами: если у них одинаковое строковое представление, то будет использован первый элемент.
<?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_count_values($array)
- Возвращает массив, ключами которого являются значения массива array, а значениями - частота повторения значений array.
<?php
$array = array(1, "hello", 1, "world", "hello");
print_r(array_count_values($array));
/*
Array
(
[1] => 2
[hello] => 2
[world] => 1
)
*/
?>
array_reduce ( array $array, callable func(), $initial_value )
- Итеративно применяет callback-функцию callback к элементам массива array и, таким образом, сводит массив к единственному значению.
- mixed callback ( mixed $carry , mixed $item ) : carry - содержит результирующее значение с предыдущей итерации; в случае же первой итерации содержит значение параметра initial. item - значение текущей итерации.
<?php
function sum($carry, $item)
{
$carry += $item;
return $carry;
}
function multiplication($carry, $item)
{
$carry *= $item;
return $carry;
}
$a = array(1, 2, 3, 4, 5);
$x = array();
var_dump(array_reduce($a, "sum")); // int(15)
var_dump(array_reduce($a, "multiplication", 10)); // int(1200), потому что: 10*1*2*3*4*5
var_dump(array_reduce($x, "sum", "No data to reduce")); // string(17) "No data to reduce"
?>
array_sum ( array $array )
- Возвращает сумму значений массива.
<?php
$a = array(2, 4, 6, 8);
echo "sum(a) = " . array_sum($a) . "\n";
$b = array("a" => 1.2, "b" => 2.3, "c" => 3.4);
echo "sum(b) = " . array_sum($b) . "\n";
/*
sum(a) = 20
sum(b) = 6.9
*/
?>
array_product ( array $array )
- Возвращает произведение значений массива.
<?php
$a = array(2, 4, 6, 8);
echo "product(a) = " . array_product($a) . "\n";
echo "product(array()) = " . array_product(array()) . "\n";
/*
product(a) = 384
product(array()) = 1
*/
?>
compact ( varname, varname, … )
- Для каждого из переданного параметров, функция compact() ищет переменную с указанным именем в текущей таблице символов и добавляет их в выводимый массив так, что имя переменной становится ключом, а содержимое переменной становится значением этого ключа. Короче говоря, она обратна функции extract().
<?php
$city = "San Francisco";
$state = "CA";
$event = "SIGGRAPH";
$location_vars = array("city", "state");
$result = compact("event", "nothing_here", $location_vars);
print_r($result);
/*
Array
(
[event] => SIGGRAPH
[city] => San Francisco
[state] => CA
)
*/
?>
extract ( array &$var_array [, int $extract_type = EXTR_OVERWRITE [, string $prefix = NULL ]])
- Импортирует переменные из массива в текущую таблицу символов.
- Каждый ключ проверяется на предмет корректного имени переменной.
- Также проверяются совпадения с существующими переменными в символьной таблице.
- Возвращает количество переменных, успешно импортированных в текущую таблицу символов.
<?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_size\n";
// blue, large, sphere, medium
?>
shuffle ( array &$array )
- Эта функция перемешивает элементы массива в случайном порядке.
- Замечание: Эта функция присваивает новые ключи элементам массива. Она удалит все существующие ключи, а не просто переупорядочит их.