функции массива

Основы

функция array_combine()

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

$keys = ['sky', 'grass', 'orange'];
$values = ['blue', 'green', 'orange'];
$array = array_combine($keys, $values);
print_r($array);
// Array
// (
//     [sky] => blue
//     [grass] => green
//     [orange] => orange
// )

так же будет полезна функция array_values().

Она извлекает из ассоциативного массива значения:

//так же создаём массив
$keys = ['sky', 'grass', 'orange'];
$values = ['blue', 'green', 'orange'];
$array = array_combine($keys, $values);
// применяем наши функции:
print_r(array_keys($array)); // ['sky', 'grass', 'orange']
print_r(array_values($array)); // ['blue', 'green', 'orange']
print_r(array_flip($array));
// Array
// (
//     [blue] => sky
//     [green] => grass
//     [orange] => orange
// )

Сокращение кода

Функция list()

позволяет быстро присвоить значения массива ряду переменных:

// define array
$array = ['a', 'b', 'c'];
// without list()
$a = $array[0];
$b = $array[1];
$c = $array[2];
// with list()
list($a, $b, $c) = $array;

Также функцию list() можно поместить в foreach :

$arrays = [[1, 2], [3, 4], [5, 6]];
foreach ($arrays as list($a, $b)) {
    $c = $a + $b;
    echo($c . ', '); // 3, 7, 11, 
}

функции preg_slit() или explode() .

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

 $string = 'hello|wild|world';
 list($hello, , $world) = explode('|', $string);
 echo("$hello, $world"); // hello, world
 

функция extract().

необходима чтобы извлечь значения из ассоциативного массива:

  $array = [
      'clothes' => 't-shirt',
      'size'    => 'medium',
      'color'   => 'blue',
  ];
  extract($array);
  echo("$clothes $size $color"); // t-shirt medium blue
  

рекомендуется использовать флаги EXTR_IF_EXISTS  и EXTR_PREFIX_ALL при работе с пользовательскими данными.

функциея compact()

делает противоположное действие, и сформирует массив из ряда переменных:


$clothes = 't-shirt';
$size = 'medium';
$color = 'blue';
$array = compact('clothes', 'size', 'color');
print_r($array);
// Array
// (
//     [clothes] => t-shirt
//     [size] => medium
//     [color] => blue
// )

Функции фильтрации

функция array_filter().

В качестве параметров необходимо передать массив и анонимную функцию- обработчик:

$numbers = [20, -3, 50, -99, 55];
$positive = array_filter($numbers, function($number) {
    return $number > 0;
});
print_r($positive); // [0 => 20, 2 => 50, 4 => 55]

Фильтрацию можно произвести и по ключам. Для этого следует воспользоваться третьим параметром, флагом ARRAY_FILTER_USE_KEY или ARRAY_FILTER_USE_BOTH .

функция array_filter()

вызов без аргументов удаляет все пустые значения:

 

$numbers = [-1, 0, 1];
$not_empty = array_filter($numbers);
print_r($not_empty); // [0 => -1, 2 => 1]

функция array_unique().

получаем из массива только уникальные значения:

$array = [1, 1, 1, 1, 2, 2, 2, 3, 4, 5, 5];
$uniques = array_unique($array);
print_r($uniques);
// Array
// (
//     [0] => 1
//     [4] => 2
//     [7] => 3
//     [8] => 4
//     [9] => 5

Функция array_column()

будет полезна если вам необходимо извлечь определённый столбец многомерного массива:

$array = [
    ['id' => 1, 'title' => 'tree'],
    ['id' => 2, 'title' => 'sun'],
    ['id' => 3, 'title' => 'cloud'],
];
$ids = array_column($array, 'id');
print_r($ids); // [1, 2, 3]
В PHP 7 функция array_column() получила небольшой апгрэйд: возможность взаимодействия с полями объекта. Это в значительной мере упрощает работу с массивами моделей:
$cinemas = Cinema::find()->all();
$cinema_ids = array_column($cinemas, 'id'); // php7 forever!

Обход массивов

функция array_map()

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

// пррмер1:

$cities = ['Berlin', 'KYIV', 'Amsterdam', 'Riga'];
$aliases = array_map('strtolower', $cities);
print_r($aliases); // ['berlin', 'kyiv, 'warsaw', 'riga']

// пример2:

$numbers = [1, -2, 3, -4, 5];
$squares = array_map(function($number) {
    return $number ** 2;
}, $numbers);
print_r($squares);  // [1, 4, 9, 16, 25]

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

$model = ['id' => 7, 'name'=>'James'];
$callback = function($key, $value) {
    return "$key is $value";
};
$res = array_map($callback, array_keys($model), $model);
print_r($res);
// Array
// (
//     [0] => id is 7
//     [1] => name is James
// )

функция array_walk().

Она похожа на array_map() , но исходные данные передаются по ссылке, в результате чего array_walk() обработает переданный массив, а не создаст новый. Таким образом мы сможем передать значения и ключи исходного массива по ссылке:

$fruits = [     'banana' => 'yellow',     'apple' => 'green',     'orange' => 'orange', ]; array_walk($fruits, function(&$value, $key) {     $value = "$key is $value"; }); print_r($fruits); // Array // ( //     [banana] => banana is yellow //     [apple] => apple is green //     [orange] => orange is orange // )

Объединение массивов

функция array_merge()

Это самый простой способ объединить несколько массивов, повторяющиеся данные перезапишутся:

$array1 = ['a' => 'a', 'b' => 'b', 'c' => 'c'];
$array2 = ['a' => 'A', 'b' => 'B', 'D' => 'D'];
$merge = array_merge($array1, $array2);
print_r($merge);
// Array
// (
//     [a] => A
//     [b] => B
//     [c] => c
//     [D] => D
// )

функция array_diff() и array_intersect().

удаляем значения одного массива из другого массива:

$array1 = [1, 2, 3, 4];
$array2 =       [3, 4, 5, 6];
$diff = array_diff($array1, $array2);
print_r($diff); 

Обратная операция реализуется при помощи вызова array_intersect():

$intersect = array_intersect($array1, $array2);
print_r($intersect);  // [2 => 3, 3 => 4]

Математические операции

array_sum(),array_product(),array_reduce()

С помощью функции array_sum() можно посчитать сумму элементов массива; array_product() перемножит все значения; array_reduce() позволит применить свою собственную формулу:

$numbers = [1, 2, 3, 4, 5];
echo(array_sum($numbers)); // 15
echo(array_product($numbers)); // 120
echo(array_reduce($numbers, function($carry, $item) {
    return $carry ? $carry / $item : 1;
})); // 0.0083 = 1/2/3/4/5

Функция array_count_values()

поможет посчитать количество всех уникальных значений массива:

$things = ['apple', 'apple', 'banana', 'tree', 'tree', 'tree'];
$values = array_count_values($things);
print_r($values);
// Array
// (
//     [apple] => 2
//     [banana] => 1
//     [tree] => 3
// )

Генерирование массивов

функция array_fill()

необходима чтобы сформировать массив из заданного количества элементов, и задать им единое значение:

$bind = array_fill(0, 5, '?');
print_r($bind); // ['?', '?', '?', '?', '?']

функция range()

получить массив, элементы которого должно варьировать в диапазоне чисел или букв следует вызывать функцию range():

$letters = range('a', 'z');
print_r($letters); // ['a', 'b', ..., 'z']
$hours = range(0, 23);
print_r($hours); // [0, 1, 2, ..., 23]

Чтобы обрезать массив — получить первые три элемента — достаточно вызвать функцию array_slice():

$numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
$top = array_slice($numbers, 0, 3);
print_r($top); // [1, 2, 3]

Сортировка массивов

Функция sort()

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

Разновидности сортировки в зависимости от префиксной буквы:

Доступны комбинации видов сортировки:

a k r u
a asort arsort uasort
k ksort krsort
r arsort krsort rsort
u uasort usort

Другие функции массива

Функции для работы с массивами.Документация на русском языке

использовалась статья Yandex.ru

Сайт shra.ru

Статья code.tutsplus.com