Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to extract specific array keys and values to another array?

Tags:

arrays

php

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?

like image 261
Pierre Avatar asked Apr 26 '12 07:04

Pierre


People also ask

How do I extract an array?

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.

How do you push a key and value in an array?

Just assign $array[$key] = $value; It is automatically a push and a declaration at the same time.

Can array key be an array?

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.

How do you find an array key?

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.


2 Answers

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

like image 103
enoyhs Avatar answered Sep 30 '22 01:09

enoyhs


Just use a good ol' loop:

$newArray = array(); foreach ($oldArray as $entry) {     $newArray[$entry['id']] = $entry['type']; } 
like image 37
deceze Avatar answered Sep 30 '22 01:09

deceze