✅ Новости WEB и WordPress, темы, плагины. Здесь мы делимся советами и лучшими решениями для веб-сайтов.

Фрагмент массива

27

Используя фрагмент массива (array_chunk), мы можем легко разбить массив на многомерный массив (массив массивов).

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

Основной пример

Предполагая, что мы настроили массив в соответствии с приведенным ниже примером кода ($arrayв строке 1), мы можем разделить этот массив на новый многомерный массив, используя array_chunkфункцию в строке 9.

Выполнение этого кода приведет к созданию многомерного массива в строке 15.

$array = [
    'Post 0', 
    'Post 1', 
    'Post 2', 
    'Post 3', 
    'Post 4', 
    'Post 5',
];
$chunked_array = array_chunk( $array, 2 );
print_r( $chunked_array ); // Output the new array.

/**
 * Output:
 *
 * Array
 * (*   [0] => Array
 * (*          [0] => Post 0
 *          [1] => Post 1
 *) *   [1] => Array
 * (*          [0] => Post 2
 *          [1] => Post 3
 *) *   [2] => Array
 * (*           [0] => Post 4
 *           [1] => Post 5
 *) *)
 **/

Сочинение

$chunked_array = array_chunk( $array, $chunk, $preserve_keys );

Функция array_chunkпринимает три параметра, $arrayи $chunk( $preserve_keysнеобязательный, по умолчанию false). Вот они:

  1. Параметр $arrayпринимает массив и является исходным массивом, который мы хотим преобразовать.
  2. принимает $chunkцелое число, и это число, которое мы используем для разделения $arrayна части этого значения.
  3. Необязательный $preserve_keysпараметр принимает логическое значение и сохраняет ключи массива, если true.

Особенности и конкретные примеры

Сохранить ключи

Изучая $preserve_keysпараметр, в нашем предыдущем примере индекс каждого вложенного массива начинается с 0. Однако, если бы мы перешли к trueэтому параметру, исходный индекс исходного массива остался бы нетронутым:

$array = [
    'Post 0', 
    'Post 1', 
    'Post 2', 
    'Post 3', 
    'Post 4', 
    'Post 5',
];
$chunked_array = array_chunk( $array, 2, true );
print_r( $chunked_array ); // Output the new array.

/**
 * Output:
 *
 * Array
 * (*   [0] => Array
 * (*          [0] => Post 0
 *          [1] => Post 1
 *) *   [1] => Array
 * (*          [2] => Post 2
 *          [3] => Post 3
 *) *   [2] => Array
 * (*           [4] => Post 4
 *           [5] => Post 5
 *) *)
 **/

В выводе ключи теперь расположены последовательно, как в исходном массиве (0, 1, 2, 3…).

Сохранять ключи, когда исходный массив имеет именованные ключи

Если наш исходный массив имеет именованные ключи, то мы можем сохранить ключи, чтобы сохранить их в нашем массиве фрагментов.

В следующем примере это немного забавно. Допустим, мы каким-то образом получили массив с некоторыми идентификаторами сообщений и именами сообщений, смешанными вместе.

Мы могли бы использовать array_chunkс $preserve_keysпараметром, установленным на, trueчтобы разделить их на отдельные сообщения.

$array = [
    'id_0'   => '10', 
    'name_0' => 'Post 1', 
    'id_1'   => '20', 
    'name_1' => 'Post 2', 
    'id_2'   => '30', 
    'name_2' => 'Post 3',
];
$chunked_array = array_chunk( $array, 2, true);
print_r( $chunked_array ); 

Все еще развлекаясь с этим массивом, давайте представим, как мы могли бы перебирать $chunked_arrayи выводить только имена.

foreach( $chunked_array as $key => $nested_array) {
    echo $nested_array[ 'name_'. $key ]. PHP_EOL;
}

Разделение большого массива для обработки.

Если у нас есть очень большой массив, мы можем array_chunkразбить его на более мелкие фрагменты, которые затем можно хранить отдельно. Давайте посмотрим, как мы можем сделать это в WordPress:

$original_array = [...]; 
$post_id        = get_the_ID();
$chunked_array  = array_chunk( $original_array, 10, true );

foreach( $chunked_array as $key => $array) {
    update_post_meta( 
        $post_id,
        '_wc_chunked_array_partial_'. $post_id,
        $array
    );
}

Дальнейшее чтение

Для получения дополнительной информации вы можете ознакомиться с руководством по PHP.

Источник записи: wholesomecode.ltd

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее