Change array keys to numeric php

This is probably a simple question for you php whizzes out there but I can't seem to find an answer in google!

I have a multi-dimensional array which first set of keys are named and I want to change them into numbers like 0, 1, 2..

If it was a normal array I could set $newArray = array_values($multiArr); and it would get rid of the keys and make them numeric! But since its multidimensional theres another set of keys/values underneath this.

Could I somehow use a loop to loop through it and define each one? But then how would I specify the current key?

Any advice would help thank you!

If this helps at all the data coming in is a JSON received from a device and there's something wrong with the encoding so the data looks like this:

`Array
(
    [�w� ��߯19�] => Array
        (
            [down] => 1279146141431
            [up] => 1279146351453
        )
`

So I need to somehow get access to the data underneath each crazy key.

asked Jul 15, 2010 at 21:56

Change array keys to numeric php

Doug MolineuxDoug Molineux

12.1k25 gold badges89 silver badges142 bronze badges

This code:

$arr = array(
  'a' => array('a' => '1', 'b' => '2', 'c' => '3'),
  'b' => array('d' => '4', 'e' => '5', 'f' => '6'),
  'c' => array('g' => '7', 'h' => '8', 'i' => '9'),
);
$arr2 = array_values($arr);

yields $arr2 in this form:

[0] => Array
    (
        [a] => 1
        [b] => 2
        [c] => 3
    )

[1] => Array
    (
        [d] => 4
        [e] => 5
        [f] => 6
    )

[2] => Array
    (
        [g] => 7
        [h] => 8
        [i] => 9
    )

Isn't that what you're trying to get?

answered Jul 15, 2010 at 22:03

Change array keys to numeric php

JavadocMDJavadocMD

4,3272 gold badges25 silver badges23 bronze badges

4

A little recursion does the trick

$data = array(
    'foo' => 'bar'
  , 'bar' => 'baz'
  , 'baz' => array(
        'foo' => 'bar'
      , 'bar' => 'baz'
      , 'baz' => array(
            'foo' => 'bar'
          , 'bar' => 'baz'
          , 'baz' => 'foo'
        )
    )
  , 'foo2' => 'bar'
  , 'bar2' => 'baz'
  , 'baz2' => array(
        'foo' => 'bar'
      , 'bar' => 'baz'
      , 'baz' => 'foo'
     )
);

print_r( $data );

$data = removeKeys( $data );

print_r( $data );

function removeKeys( array $array )
{
  $array = array_values( $array );
  foreach ( $array as &$value )
  {
    if ( is_array( $value ) )
    {
      $value = removeKeys( $value );
    }
  }
  return $array;
}

answered Jul 15, 2010 at 22:13

Peter BaileyPeter Bailey

104k31 gold badges181 silver badges201 bronze badges

2

I didn't entirely understand the structure of your array, but you can iterate through a multidimensional associative array in a number of ways. Here's one that builds a numerically indexed array:

$multiArray = Array(/* stuff */);
$numericArray = Array();
foreach ($multiArray as $key => $val) {
    foreach ($val as $childKey => $childVal) {
        // do something else?
    }
    $numericArray []= $val;
}

answered Jul 15, 2010 at 22:03

sunetossunetos

3,3881 gold badge22 silver badges14 bronze badges

$array = array("name"=>"sima", "lastname"=>"johansoon");

$newArray = array();
foreach($array as $key=>$value) {
    array_push($newArray, $value);

}
print_r($newArray);

answered Mar 21, 2019 at 14:53

Change array keys to numeric php

1