1

If i have an array like this:

array(
    "unknownString" => 34, //unknown number
    "anotherString" => 32,
    "asdf" => 21
);

How can I convert it to this:

array(
    array("unknownString", 34),
    array("anotherString", 32),
    array("asdf", 21)
);
Max Hudson
  • 9,698
  • 14
  • 54
  • 103
  • Related : [Converting associative arrays into normal ones](http://stackoverflow.com/questions/7696933/converting-associative-arrays-into-normal-ones). – Lion Jul 13 '12 at 18:45

2 Answers2

5

This should work:

$array = array(
    "unknownString" => 34, //unknown number
    "anotherString" => 32,
    "asdf" => 21
);

$new_array = array();
foreach( $array as $key => $value) {
    $new_array[] = array( $key, $value);
}

If you wanted to, you could also use array_walk():

$new_array = array();
array_walk( $array, function( $el, $key) use( &$new_array){ 
   $new_array[] = array( $key, $el); 
});
nickb
  • 58,150
  • 12
  • 100
  • 138
0

Here's a slightly different version using array_map:

function swap($value, $key) {
   return array( $key, $value );
}
$arr = array(
    "unknownString" => 34, //unknown number
    "anotherString" => 32,
    "asdf" => 21
);

print_r(array_map('swap', $arr, array_keys($arr)));
Jeff Lambert
  • 23,924
  • 4
  • 66
  • 91