====== PHP RFC: Add array_group function ====== * Version: 2.0 * Date: 2021-11-28 * Author: Hassan Ahmed, 7snovic@gmail.com * Status: Declined * First Published at: https://wiki.php.net/rfc/array_column_results_grouping ===== Introduction ===== This RFC is to implement a new function to PHP that upgrades the functionality of array_column to group similar results that share the same index_key into a multidimensional array. the current behavior of array_column is to return a single result and ignore the rest of the results that share the same index. ===== Proposal ===== This RFC is to add a new function called array_group array_group(array $array, int|string|null $column_key, int|string|null $index_key = null) The current behavior is when you have multiple elements share the same key, it will be overwritten. let's assume that we have the following. 1, 'name' => 'hassan'], ['id' => 2, 'name' => 'sara'], ['id' => 3, 'name' => 'selim'], ['id' => 4, 'name' => 'chris'], ['id' => 5, 'name' => 'sara'], ]; when we use array_column with this the output will be print_r(array_column($array, null, 'name')); Array ( [hassan] => Array ( [id] => 1 [name] => hassan ) [sara] => Array ( [id] => 5 [name] => sara ) [selim] => Array ( [id] => 3 [name] => selim ) [chris] => Array ( [id] => 4 [name] => chris ) ) The RFC implements a new function called array_group to group the results in an indexed array to group all the similar elements, so we can use : print_r(array_group($array, null, 'name')); Array ( [hassan] => Array ( [0] => Array ( [id] => 1 [name] => hassan ) ) [sara] => Array ( [0] => Array ( [id] => 2 [name] => sara ) [1] => Array ( [id] => 5 [name] => sara ) ) [selim] => Array ( [0] => Array ( [id] => 3 [name] => selim ) ) [chris] => Array ( [0] => Array ( [id] => 4 [name] => chris ) ) ) ===== Backward Incompatible Changes ===== No backward incompatible breaks. ===== Proposed PHP Version(s) ===== Next PHP 8.x, currently PHP 8.2. ===== RFC Impact ===== ==== To Existing Extensions ==== Standard ext ===== Proposed Voting Choices ===== Yes/No vote. ===== Voting ===== Started at : 2021-12-21 Ends at : 2022-01-04 * Yes * No ===== Implementation ===== [[https://github.com/php/php-src/pull/7698|Implementing array_group function]]