====== PHP RFC: array_reindex function ====== * Version: 0.1 * Date: 2019-03-07 * Author: Andrey Gromov, andrewgrom@rambler.ru * Status: Draft * First Published at: http://wiki.php.net/rfc/array_reindex ===== Introduction ===== It is not rare case when we need only values from some array. Usually we use constructs like: $array = array_values($array); In fact I see many code like $new_array = array_values($array); without any usage of $array after this line. Also, common case is skip null or empty values from this resulting array, then we use if(empty($value)) continue; inside loop. In those cases array_values create redundant structures, and ifs slow down execution and raise complexity of code. ===== Proposal ===== I propose to add new "array_reindex" function into standard library. This function will receive array by reference, optionally remove useless values and make in-place conversion to packed array. array_reindex ( array &$array [, int $flags = ARRAY_REINDEX_NO_SKIP ] ) : bool Where $flags is bitmask of filtering constants. If array is kept unchanged then returns FALSE, otherwise returns TRUE. ===== Backward Incompatible Changes ===== Only if the same function declared inside user code. ===== Proposed PHP Version(s) ===== Next PHP 7.x or PHP 8. ==== New Constants ==== ARRAY_REINDEX_NO_SKIP = 1<<0; // Keep all values ARRAY_REINDEX_SKIP_NULL = 1<<1; // Skip NULL values const ARRAY_REINDEX_SKIP_EMPTY = 1<<2; //Skip empty(false) values In current realisation it is possible to use all constant simultaneously and only most greedly will be used. ===== Future Scope ===== Maybe extend filtering scope. ===== Patches and Tests ===== I will write tests after(if) I receive green light. :) ===== Implementation ===== Review is needed. I not sure if my code does not have any problems. https://github.com/php/php-src/compare/master...rjhdby:array_reindex ===== References ===== ===== Rejected Features =====