PHP

Работа с массивами PHP - создание, наполнение, удаление

Основные примеры работы с массивами PHP. Создание, наполнение, извлечение удаление значений.

1

Создание массивов

Создать массив и заполнить его значениями

$array = array(
    'яблоко',
    'апельсин',
    'виноград'
);

// или

$array = array();
$array[] = 'яблоко';
$array[] = 'апельсин';
$array[] = 'виноград';

Можно применить функцию array_fill($start, $size, $value), которая создаст массив с количеством $size элементов со значением $value начиная с индекса $start.

Данный пример создает массив с тремя элементам «текст», ключи которых будут начинаться с нуля.

$array = array_fill(0, 3, 'текст');
print_r($array);

Результат:

Array
(
    [0] => текст
    [1] => текст
    [2] => текст
)

Еще вариант — функция explode($delimiter, $string), которая из строки $string создаст массив используя разделитель $delimiter, в данном примере запятая.

$array = explode(',', 'текст 1,текст 2,текст 3');
print_r($array);

Результат:

Array
(
    [0] => текст 1
    [1] => текст 2
    [2] => текст 3
)
2

Узнать количество элементов в массиве

echo count($array);
// или 
echo sizeof($array);

Если массив ассоциативный (многомерный) count() или sizeof() вернут количество элементов только первого уровня. Чтобы получит количество всех элементов нужно использовать константу COUNT_RECURSIVE.

$array = array(
    array(
        'яблоко',
        'апельсин',
        'виноград'
    ),
    array(
        'яблоко',
        'апельсин',
        'виноград'
    )
);

echo count($array);                    // вернет 2
echo count($array, COUNT_RECURSIVE);   // вернет 8
3

Добавление элементов в массив

Добавить значение в начало массива

array_unshift($array, $value) добавляет одно или несколько элементов в начало массива.

$array = array(
    'яблоко',
    'апельсин',
    'виноград'
);

array_unshift($array, 'банан');
print_r($array);

Результат:

Array
(
    [0] => банан
    [1] => яблоко
    [2] => апельсин
    [3] => виноград
)

Добавить значение в конец массива

array_push($array, $value) добавляет значение в конец массива.

$array = array(
    'яблоко',
    'апельсин',
    'виноград'
);

array_push($array, 'банан');
// или
$array[] = 'банан';

print_r($array);

Результат:

Array
(
    [0] => яблоко
    [1] => апельсин
    [2] => виноград
    [3] => банан
    [4] => банан
)
4

Получение данных из массива

Получить первый элемент массива

$array = array(
    'яблоко',
    'апельсин',
    'виноград'
);

reset($array);
$first = current($array);  // яблоко

Получить последний элемент массива

$array = array(
    'яблоко',
    'апельсин',
    'виноград'
);

$end = end($array);  // виноград

Получить часть (срез) массива

array_slice($array, $offset, $length) возвращает часть массива начиная с индекса $offset длиной $length.

  • Если $offset отрицательный, то отчет начинается с конца массива.
  • $length можно не указывать, тогда функция вернет все элементы до конца массива начиная с индекса $offset.
$array = array(
    'яблоко',
    'апельсин',
    'виноград'
);

$new = array_slice($array, 0, 2);
print_r($new);

Результат:

Array
(
    [0] => яблоко
    [1] => апельсин
)

Извлечь первый элемент массива

array_shift($array) извлекает первый элемент из массива $array и возвращает его значение.

$array = array(
    'яблоко',
    'апельсин',
    'виноград'
);

$first = array_shift($array); // яблоко

print_r($array);

Результат:

Array
(
    [0] => апельсин
    [1] => виноград
)

Извлечь последний элемент массива

array_pop($array) извлекает последний элемент из массива $array и возвращает его значение

$array = array(
    'яблоко',
    'апельсин',
    'виноград'
);

$end = array_pop($array); // виноград
print_r($array);

Результат:

Array
(
    [0] => яблоко
    [1] => апельсин
)

Извлечь часть массива

Чтобы извлечь из массива часть можно применить функции array_slice() и array_diff().

$array = array(
    'яблоко',
    'апельсин',
    'виноград'
);

$new = array_slice($array, 0, 2);
$array = array_diff($array, $new);

print_r($new);
print_r($array);

Результат:

Array
(
    [0] => яблоко
    [1] => апельсин
)

Array
(
    [2] => виноград
)

Выбрать все значения из массива

array_values($array) — создает новый массив из исходного $array игнорируя его ключи.

$array = array(
    'key 1' => 'яблоко',
    'key 2' => 'апельсин',
    'key 3' => 'виноград'
);

$new = array_values($array);
print_r($new);

Результат:

Array
(
    [0] => яблоко
    [1] => апельсин
    [2] => виноград
)

Выбрать все ключи массива

array_keys($array) — создает новый массив состоящий из ключей исходного массива $array.

$array = array(
    'key 1' => 'яблоко',
    'key 2' => 'апельсин',
    'key 3' => 'виноград'
);

$new = array_keys($array);
print_r($new);

Результат:

Array
(
    [0] => key 1
    [1] => key 2
    [2] => key 3
)

Выбирать случайные значения из массива

array_rand($array, $count) возвращает случайным образом один или несколько ключей из массива $array. Если $count больше единицы, то результат будет в виде массива. 

$array = array(
    3 => 'яблоко',
    1 => 'апельсин',
    5 => 'виноград'
);

echo $array[array_rand($array)];
5

Поиск и проверка элементов в массиве

Проверить, есть ли значение в массиве

$array = array(
    'яблоко',
    'апельсин',
    'виноград'
);

if (in_array('апельсин', $array)) {
    echo 'Найдено значение "апельсин"';
}

// или 

if (array_search('апельсин', $array) !== false) {
    echo 'Найдено значение "апельсин"';
}

Проверить, есть ли ключ в массиве

$array = array(
    1 => 'яблоко',
    2 => 'апельсин',
    3 => 'виноград'
);

if (array_key_exists(2, $array)) {
    echo 'Найден ключ 2';
}

// или

if (isset($array[2])) {
    echo 'Найден ключ 2';
}
6

Удаление элементов из массива

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

В первом примере элемент удаляется по ключу, во втором по значению:

$array = array(
    'яблоко',
    'апельсин',
    'виноград'
);

// Удаление по ключу
unset($array[1]);

// Удаление по значению
unset($array[array_search('апельсин', $array)]);

print_r($array);

Результат:

Array
(
    [0] => яблоко
    [2] => виноград
)

Удаление пустых значений

В PHP нет отдельной функции для удаления пустых значений в массиве, поэтому применяют array_diff() которая возвращает расхождения массивов.

$array = array(
    'яблоко',
    '',
    'виноград'
);

$array = array_diff($array, array(''));
print_r($array);

Результат:

Array
(
    [0] => яблоко
    [2] => виноград
)

Если требуется удалить значения включая 0, null, array() и т.д. можно применить следующее:

$array = array_diff($array, array('', ' ', null, 0, array()));

Удалить повторяющиеся значения массива

$array = array(
    'яблоко',
    'яблоко',
    'апельсин',
    'виноград'
);

$array = array_unique($array);
print_r($array);

Результат:

Array
(
    [0] => яблоко
    [2] => апельсин
    [3] => виноград
)
7

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

Объединить два и более массивов поможет функция array_merge($array_1, $array_2, ...).

$array_1 = array(
    'яблоко',
    'апельсин',
    'виноград'
);

$array_2 = array(
    'помидор',
    'огурец',
);

$new = array_merge($array_1, $array_2);
print_r($new);

Результат:

Array
(
    [0] => яблоко
    [1] => апельсин
    [2] => виноград
    [3] => помидор
    [4] => огурец
)
8

Разделить массив на части

array_chunk($array, $size) — создает новый многомерный массив из исходного, деля его на равные части.

В данном примере указано $size = 3, поэтому получается четыре подмассива в каждом из которых по три элемента.

$array = array(
    'январь',
    'февраль',
    'март',
    'апрель',
    'май',
    'июнь',
    'июль',
    'август',
    'сентябрь',
    'ноябрь',
    'декабрь',
);

$array = array_chunk($array, 3);
print_r($array);

Результат:

Array
(
    [0] => Array
        (
            [0] => январь
            [1] => февраль
            [2] => март
        )
    [1] => Array
        (
            [0] => апрель
            [1] => май
            [2] => июнь
        )
    [2] => Array
        (
            [0] => июль
            [1] => август
            [2] => сентябрь
        )
    [3] => Array
        (
            [0] => ноябрь
            [1] => декабрь
        )
)

Если требуется разделить массив на определенное количество частей поможет следующий прием:

$array = array(
    'январь',
    'февраль',
    'март',
    'апрель',
    'май',
    'июнь',
    'июль',
    'август',
    'сентябрь',
    'ноябрь',
    'декабрь',
);

$array = array_chunk($array, ceil(count($array) / 3));
print_r($array);

Результат:

Array
(
    [0] => Array
        (
            [0] => январь
            [1] => февраль
            [2] => март
            [3] => апрель
        )
    [1] => Array
        (
            [0] => май
            [1] => июнь
            [2] => июль
            [3] => август
        )
    [2] => Array
        (
            [0] => сентябрь
            [1] => ноябрь
            [2] => декабрь
        )
)
29 октября 2017