array_chunk in PHP

Written on 2020-05-14

PHP has a lot of undiscovered native functions for many devs. Usually, we don't discover these functions until there is a true need for them. array_chunk is certainly one of these functions for me personally. In this article, we will discover what array_chunk is, what it does, and see it used in action.

array_chunk and how it works

array_chunk is a pretty nifty name for slicing an array into chunks. This is essentially what the function does, it reads an array, and splits it into chunks.

Let me explain this in developer terms: we have an array, [1, 2, 3, 4, 5, 6, 7, 8], we use array_chunk on the array, specifying we want chunks of 2 items. The output would look similar to below.

$input = [1, 2, 3, 4, 5, 6, 7, 8];

array_chunk($input, 2);

[
    0 => [1, 2], 
    1 => [3, 4], 
    2 => [5, 6], 
    3 => [7, 8],
]

Pretty cool eh? With this function, you can quickly see how it can be utilized for statistical purposes, especially with segment averaging.

This function accepts 3 parameters as follows:

  • The array
  • The size of the chunks required as an int
  • A boolean to instruct the functions to preserve the keys of the original array or to not. Note: the default is false.

A real-life problem

Walk with me now through this scenario: my boss wants to know for each working week, the average profits from his shop. Each working week has 5 days.

So, let's say for argument's sake say we have just queried the last 20 days of shop sales from the shop's database. The data returned populate our array with 20 entries and therefore has 4 working weeks.

Now this leaves us with the problem at hand, we need to calculate the average sales across every 5 days for 4 weeks. Follow me through this next section to achieve the result.

Average segments with array_chunk

We know our data array has 20 entries, and we know that we need an average of each week of sales (5 entries). Let's utilize array_chunk with a little bit of extra native PHP to do the calculations.

$sales = [
   250.70, 220.10, 233, 243.50, 255,
   200, 300, 234, 350, 222,
   237.99, 200.30, 150.98, 201, 209,
   200, 300, 240, 203, 280,
];

// Split the array into groups of five, 
//  representing a 5 days working week.
$salesPerWeek = array_chunk($sales, 5);

// Map all items to their averages, week by week.
$averageSales = array_map(
   fn(array $items) => array_sum($items) / count($items),
   $salesPerWeek
);

Now, if we print the contents of $averageSales we will get something like the following:

[
    240.46,
    261.2,
    199.854,
    244.6,
]

Let's break down the code for complete transparency:

  • First, we have our array with 20 entries of sales data for each day.
  • Next, we use array_chunk to split it into groups of five.
  • Then we use array_map on each chunk, and use array_sum to divide by the count of the chunk to give us the average.

And that is it!

This type of functionality could be used in many statistical applications that require segmentation. The example in this article tries to show you how array_chunk works in layman terms with a bit of a pretend use-case behind it. I hope this was interesting, if you would like to see any more of my content, please check out my blog, https://www.codewall.co.uk/

Things I wish I knew when I started programming

Things I wish I knew when I started programming cover image

This is my newest book aimed at programmers of any skill level. This book isn't about patterns, principles, or best practices; there's actually barely any code in it. It's about the many things I've learned along the way being a professional programmer, and about the many, many mistakes I made along that way as well. It's what I wish someone would have told me years ago, and I hope it might inspire you.

Read more

Comments

Loading…
No comments yet, be the first!
Noticed a tpyo? You can submit a PR to fix it.
HomeRSSNewsletterDiscord© 2025 stitcher.io