I have an array of arrays like so:
array( array(), array(), array(), array() );
the arrays inside the main array contain 4 keys and their values. The keys are the same among all arrays like this:
array( 'id' => 'post_1', 'desc' => 'Description 1', 'type' => 'type1', 'title' => 'Title' ); array( 'id' => 'post_2', 'desc' => 'Description 2', 'type' => 'type2', 'title' => 'Title' );
So I want to create another array and extract the id
and type
values and put them in a new array like this:
array( 'post_1' => 'type1', 'post_2' => 'type2'); // and so on
The keys in this array will be the value of id
key old arrays and their value will be the value of the type
key.
So is it possible to achieve this? I tried searching php.net Array Functions but I don't know which function to use?
The extract() function imports variables into the local symbol table from an array. This function uses array keys as variable names and values as variable values. For each element it will create a variable in the current symbol table. This function returns the number of variables extracted on success.
Just assign $array[$key] = $value; It is automatically a push and a declaration at the same time.
As array values can be other arrays, trees and multidimensional arrays are also possible. And : The key can either be an integer or a string.
The array_keys() function is used to get all the keys or a subset of the keys of an array. Note: If the optional search_key_value is specified, then only the keys for that value are returned. Otherwise, all the keys from the array are returned.
PHP 5.5 introduced an array function that does exactly what you want. I'm answering this in hopes that it may help someone in future with this question.
The function that does this is array_column
. To get what you wanted you would write:
array_column($oldArray, 'type', 'id');
To use it on lower versions of PHP either use the accepted answer or take a look at how this function was implemented in PHP and use this library: https://github.com/ramsey/array_column
Just use a good ol' loop:
$newArray = array(); foreach ($oldArray as $entry) { $newArray[$entry['id']] = $entry['type']; }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With