Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert associative array into indexed

Tags:

php

Ive seen a few examples by using array_values, but cant quite make out how to get it to work...

I have an associative array thats passed via POST, I need to convert it into a indexed array...

My print_r($_POST) gives me this... I need all of this put into an indexed array :)

Array (     [fieldnames] => 36771X21X198|36771X21X199|36771X21X200|36771X21X201|36771X21X202      [36771X21X198] => 3434343     [display36771X21X198] => on     [36771X21X199] => 5656565     [display36771X21X199] => on      [36771X21X200] => 89898989      [display36771X21X200] => on      [36771X21X201] => 90909090      [display36771X21X201] => on      [36771X21X202] => 12121212      [display36771X21X202] => on      [move] => movesubmit      [move2] => ONLINE Submit      [thisstep] => 1      [sid] => 36771      [token] => 1234567890 )  
like image 724
Graeme Leighfield Avatar asked Oct 25 '11 11:10

Graeme Leighfield


People also ask

How do you convert an array into associative array?

Your code is the exact equivalent of: $assoc = array_fill_keys(array(1, 2, 3, 4, 5), 1); // or $assoc = array_fill_keys(range(1, 5), 1);

Does In_array work for associative array?

in_array() function is utilized to determine if specific value exists in an array. It works fine for one dimensional numeric and associative arrays.

What do associative arrays use for indexes?

Associative arrays differ from normal, fixed-size arrays in that they have no predefined limit on the number of elements, the elements can be indexed by any tuple as opposed to just using integers as keys, and the elements are not stored in preallocated consecutive storage locations.


1 Answers

Observe this amazing way to convert your $_POST into a numerically indexed array:

$numerical = array_values($_POST); 


but what if you want to preserve your keys? Perhaps you want something like this?

$numerical = array(); $sep = ':';  foreach($_POST as $k=>$v) {   $numerical[] = $k.$sep.$v; } 

$numerical will then have:

Array (     [0] => fieldnames:36771X21X198|36771X21X199|36771X21X200|36771X21X201|36771X21X202     [1] => 36771X21X198:3434343     [2] => display36771X21X198:on     [3] => 36771X21X199:5656565     [4] => display36771X21X199:on     [5] => 36771X21X200:89898989     [6] => display36771X21X200:on     [7] => 36771X21X201:90909090     [8] => display36771X21X201:on     [9] => 36771X21X202:12121212     [10] => display36771X21X202:on     [11] => move:movesubmit     [12] => move2:ONLINE Submit     [13] => thisstep:1     [14] => sid:36771     [15] => token:1234567890 ) 


or, for my final example:

$fieldnames_original = explode('|', $_POST['fieldnames']); $fieldnames_actual = array(); $values = array();  foreach($_POST as $k=>$v) {   if($k!='fieldnames')   {     $fieldnames_actual[] = $k;     $values[] = $v;   } } 

which will set 3 arrays:

$fieldnames_original:

Array (     [0] => 36771X21X198     [1] => 36771X21X199     [2] => 36771X21X200     [3] => 36771X21X201     [4] => 36771X21X202 ) 

$fieldnames_actual:

Array (     [0] => 36771X21X198     [1] => display36771X21X198     [2] => 36771X21X199     [3] => display36771X21X199     [4] => 36771X21X200     [5] => display36771X21X200     [6] => 36771X21X201     [7] => display36771X21X201     [8] => 36771X21X202     [9] => display36771X21X202     [10] => move     [11] => move2     [12] => thisstep     [13] => sid     [14] => token ) 

and $values:

Array (     [0] => 3434343     [1] => on     [2] => 5656565     [3] => on     [4] => 89898989     [5] => on     [6] => 90909090     [7] => on     [8] => 12121212     [9] => on     [10] => movesubmit     [11] => ONLINE Submit     [12] => 1     [13] => 36771     [14] => 1234567890 ) 
like image 106
ghbarratt Avatar answered Oct 04 '22 08:10

ghbarratt