How to Split Array into Specific Number of Chunks in PHP ?
This article will show you how to split an array into a specific number of chunks using PHP. There are basically two approaches to solve this problem, these are:
Table of Content
- Using array_chunk() function
- Using array_slice() function
- Using array_map with range
Approach 1: Using array_chunk() function
The array_chunk() function is used to split an array into parts or chunks of a given size depending upon the parameters passed to the function. The last chunk may contain fewer elements than the desired size of the chunk.
Syntax:
array array_chunk( $array, $size, $preserve_keys )
Example:
<?php
// PHP Program to Split Array into
// Specific Number of Chunks
// Declare an array
$arr = [
"G", "e", "e", "k", "s",
"f", "o", "r", "G", "e",
"e", "k", "s"
];
// Use array_chunk() function to
// split array into chunks
print_r(array_chunk($arr, 4));
?>
Output:
Array (
[0] => Array (
[0] => G
[1] => e
[2] => e
[3] => k
)
[1] => Array (
[0] => s
[1] => f
[2] => o
[3] => r
)
[2] => Array (
[0] => G
[1] => e
[2] => e
[3] => k
)
[3] => Array (
[0] => s
)
)
Approach 2: Using array_slice() function
The array_slice() function is used to fetch a part of an array by slicing through it, according to the users choice.
Syntax:
array_slice($array, $start_point, $slicing_range, preserve)
Example:
<?php
// PHP Program to split array into
// Specific Number of Chunks
// Declare an array
$arr = [
"G", "e", "e", "k", "s",
"f", "o", "r", "G", "e",
"e", "k", "s"
];
// Use array_slice() function to
// split array into chunks
$splitArr = [
array_slice($arr, 0, 4),
array_slice($arr, 4, 7),
array_slice($arr, 8, 12),
array_slice($arr, 12, 1),
];
print_r($splitArr);
?>
Output:
Array (
[0] => Array (
[0] => G
[1] => e
[2] => e
[3] => k
)
[1] => Array (
[0] => s
[1] => f
[2] => o
[3] => r
)
[2] => Array (
[0] => G
[1] => e
[2] => e
[3] => k
)
[3] => Array (
[0] => s
)
)
Approach 3: Using array_map with range
You can use array_map with range to generate chunk indexes based on the array size and chunk size. Then, apply array_slice to extract chunks using these indexes, resulting in the array split into specific-sized chunks.
Example: This PHP script defines a custom_array_chunk function to split an array $arr into chunks of size 4 using array_map, range, and array_slice, displaying the result with print_r.
<?php
// Custom function to split array into chunks
function custom_array_chunk($array, $chunk_size) {
// Calculate the number of chunks needed
$num_chunks = ceil(count($array) / $chunk_size);
// Use array_map with range to create chunks
return array_map(function($i) use ($array, $chunk_size) {
// Calculate start index of current chunk
$start = $i * $chunk_size;
// Return slice of array for current chunk
return array_slice($array, $start, $chunk_size);
}, range(0, $num_chunks - 1));
}
// Declare an array
$arr = [
"G", "e", "e", "k", "s",
"f", "o", "r", "G", "e",
"e", "k", "s"
];
// Split array into chunks of size 4 using custom function
$result = custom_array_chunk($arr, 4);
// Print the result
print_r($result);
?>
Output
Array ( [0] => Array ( [0] => G [1] => e [2] => e [3] => k ) [1] => Array ( [0] => s [1] => f ...
Contact Us