1 2 3 4 | $assoc_arr = array_reduce ( $arr , function ( $result , $item ) { $result [ $item [ 'text' ]] = $item [ 'id' ]; return $result ; }, array ()); |
Recommendation: If you are interested in fast PHP for your WordPress site, check out this great PHP/WP benchmark-post from Kinsta, where you can get great managed WordPress hosting with the best support and performance optimizing technical addons like Redis and ElasticSearch.
The snippets story
I just ran into a problem using array_map on associative arrays, like the following one:
1 2 3 4 5 6 7 8 9 10 | $arr = array ( array ( 'id' => 22, 'text' => 'Lorem' ), array ( 'id' => 25, 'text' => 'ipsum' ), ); |
From this array, I wanted to create another, associative array, with the following structure:
1 2 3 4 | $assoc_arr = array ( 'Lorem' => 22, 'ipsum' => 25 ); |
My first guess was the array_map function, but I had to realize that there is no way to manipulate the keys of the resulting array. After some googling, I discovered, that it is array_reduce you have to use to simulate array_map on associative arrays.
ps: I know, a simple foreach would have done the trick, but once on the path of functional programming, I didn’t want to leave it that fast