Она создаёт новый массив из двух существующих:
первый использует для создания ключей,
второй в качестве значений:
$keys = ['sky', 'grass', 'orange']; $values = ['blue', 'green', 'orange']; $array = array_combine($keys, $values); print_r($array); // Array // ( // [sky] => blue // [grass] => green // [orange] => orange // )
Она извлекает из ассоциативного массива значения:
array_keys() возвращает только ключи заданного массива; array_flip() меняет местами ключи и значения://так же создаём массив $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 // )
позволяет быстро присвоить значения массива ряду переменных:
// 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,
}
извлекают только те значения, которые действительно нужны:
$string = 'hello|wild|world';
list($hello, , $world) = explode('|', $string);
echo("$hello, $world"); // hello, world
необходима чтобы извлечь значения из ассоциативного массива:
$array = [
'clothes' => 't-shirt',
'size' => 'medium',
'color' => 'blue',
];
extract($array);
echo("$clothes $size $color"); // t-shirt medium blue
рекомендуется использовать флаги EXTR_IF_EXISTS и EXTR_PREFIX_ALL при работе с пользовательскими данными.
делает противоположное действие, и сформирует массив из ряда переменных:
$clothes = 't-shirt';
$size = 'medium';
$color = 'blue';
$array = compact('clothes', 'size', 'color');
print_r($array);
// Array
// (
// [clothes] => t-shirt
// [size] => medium
// [color] => blue
// )
В качестве параметров необходимо передать массив и анонимную функцию- обработчик:
$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 .
вызов без аргументов удаляет все пустые значения:
$numbers = [-1, 0, 1]; $not_empty = array_filter($numbers); print_r($not_empty); // [0 => -1, 2 => 1]
получаем из массива только уникальные значения:
$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 = [ ['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!
позволяет обойти все элементы массива и указать функцию обратного вызова. Вы можете передать как анонимку, так и название существующей функции. В результате получите массив с преобразованными значениями:
// пррмер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_map() , но
исходные данные передаются по ссылке, в результате чего array_walk() обработает
переданный массив, а не создаст новый.
Таким образом мы сможем передать
значения и ключи исходного массива по ссылке:
Это самый простой способ объединить несколько массивов, повторяющиеся данные перезапишутся:
$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 // )
удаляем значения одного массива из другого массива:
$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() позволит применить свою собственную формулу:
$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
поможет посчитать количество всех уникальных значений массива:
$things = ['apple', 'apple', 'banana', 'tree', 'tree', 'tree']; $values = array_count_values($things); print_r($values); // Array // ( // [apple] => 2 // [banana] => 1 // [tree] => 3 // )
необходима чтобы сформировать массив из заданного количества элементов, и задать им единое значение:
$bind = array_fill(0, 5, '?'); print_r($bind); // ['?', '?', '?', '?', '?']
получить массив, элементы которого должно варьировать в диапазоне чисел или букв следует вызывать функцию 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]
сортирует элементы массива в возрастающем порядке и присваивает новые ключи элементам массива.
Разновидности сортировки в зависимости от префиксной буквы:
Доступны комбинации видов сортировки:
a k r u a asort arsort uasort k ksort krsort r arsort krsort rsort u uasort usort
Функция array_replace заменяет значения первого массива значениями с такими же ключами из других переданных массивов.
Если ключ из первого массива присутствует во втором массиве, его значение заменяется на значение из второго массива.
Если ключ есть во втором массиве, но отсутствует в первом - он будет создан в первом массиве.
Если ключ присутствует только в первом массиве, то сохранится как есть.
Если для замены передано несколько массивов, они будут обработаны в порядке передачи и более поздние массивы будут перезаписывать значения из предыдущих.
Синтаксис:
array_replace(массив, массив, массив...);
заменим элемент с ключом 0 на '!', а элемент с ключом 2 - на '!!':
<?php $arr = ['a', 'b', 'c', 'd', 'e']; $result = array_replace($arr, [0=>'!', 2=>'!!'])); var_dump($result); //Результат : // ['!', 'b', '!!', 'd', 'e'] ?>
<?php
$myarray = array("Apples", "Oranges", "Pears");
$output = print_r($myarray, true);
print $output;
?>
Print_r отображает сам массив. Но, использовать его функцию и указать TRUE, функция сохраняет вывод в переменной.
Если вы хотите определить количество значений массива, можно использовать функцию COUNT следующим образом:
<?php
$myarray = array("Apples", "Oranges", "Pears");
$size = count($myarray);
print $size; // 3
?>
Это функция, аналогичная print_r(). В основном она делает то же самое, но:
Изменив первый скрипт с использованием var_dump(), получим следующий результат:
array(3) {
[0]=>
string(6) “Apples”
[1]=>
string(7) “Oranges”
[2]=>
string(5) “Pears”
}
Функция var_dump() отобразила, что массив имеет три значения,
а также вывела длину каждой строки.
функция var_export() похожа на var_dump() и print_r().
Она отличается тем, что выводит информацию о переменной в виде результата,
который может использоваться в качестве PHP- кода:
array ( 0 => ‘Apples’, 1 => ‘Oranges’, 2 => ‘Pears’, )
вы можете скопировать и вставить эту информацию непосредственно в свои скрипты.
Функции для работы с массивами.Документация на русском языке