rfc:array_key_first_last_index
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
rfc:array_key_first_last_index [2015/12/07 17:58] – jbafford | rfc:array_key_first_last_index [2016/01/01 20:19] – jbafford | ||
---|---|---|---|
Line 15: | Line 15: | ||
===== Proposal ===== | ===== Proposal ===== | ||
+ | Arrays in php are ordered maps, but there is no convenient way to | ||
+ | |||
array_key_first() returns the first key in an array. | array_key_first() returns the first key in an array. | ||
array_key_last() returns the last key in an array. | array_key_last() returns the last key in an array. | ||
- | array_key_index() returns the key at a specified index (using a substr-like offset; | + | array_key_index() returns the key at a specified index (using a substr-like offset; |
+ | |||
+ | <code php> | ||
+ | $arr [' | ||
+ | |||
+ | $key = array_key_first($arr); | ||
+ | |||
+ | $key = array_key_last($arr, | ||
+ | |||
+ | $key = array_key_index($arr, | ||
+ | $key = array_key_index($arr, | ||
+ | $key = array_key_index($arr, | ||
+ | |||
+ | |||
+ | // Also works for numeric arrays | ||
+ | $numeric = [1 => 1, 5 => 2, 2 => 3]; | ||
+ | $key = array_key_index($numeric, | ||
+ | $key = array_key_index($numeric, | ||
+ | $key = array_key_index($numeric, | ||
+ | </ | ||
All three functions return the requested array key, or null if the requested array key is not found (an empty array, or an out-of-bounds index in the case of array_key_index). For convenience, | All three functions return the requested array key, or null if the requested array key is not found (an empty array, or an out-of-bounds index in the case of array_key_index). For convenience, | ||
Line 43: | Line 65: | ||
With the reference implementation provided below, array_key_first() and array_key_last() directly retrieve the array key from the underlying hash (by setting a local hash pointer to the start/end of the array and retrieving the key for that index). By necessity, array_key_index() iterates through the keys, but does so in C code, rather than in PHP code. | With the reference implementation provided below, array_key_first() and array_key_last() directly retrieve the array key from the underlying hash (by setting a local hash pointer to the start/end of the array and retrieving the key for that index). By necessity, array_key_index() iterates through the keys, but does so in C code, rather than in PHP code. | ||
+ | |||
+ | In the proposed PR implementing this functionality (see below), array_key_first() and array_key_last() are implemented in terms of array_key_index(); | ||
===== Backward Incompatible Changes ===== | ===== Backward Incompatible Changes ===== | ||
Line 71: | Line 95: | ||
- a link to the git commit(s) | - a link to the git commit(s) | ||
- a link to the PHP manual entry for the feature | - a link to the PHP manual entry for the feature | ||
- |
rfc/array_key_first_last_index.txt · Last modified: 2017/09/22 13:28 by 127.0.0.1