Функции

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 )

  • Эта функция перемешивает элементы массива в случайном порядке.
  • Замечание: Эта функция присваивает новые ключи элементам массива. Она удалит все существующие ключи, а не просто переупорядочит их.