在PHP中将数组键更改为数字

时间:2010-07-15 21:56:12

标签: php arrays

这可能是一个简单的问题,你在那里的PHP高手,但我似乎无法在谷歌找到答案!

我有一个多维数组,第一组键被命名,我想将它们更改为0,1,2等数字。

如果它是普通数组,我可以设置$ newArray = array_values($ multiArr);它会摆脱键并使它们成为数字!但是因为它的多维度是另一组键/值。

我可以以某种方式使用循环来循环并定义每一个吗?但那我该如何指定当前的密钥呢?

任何建议都会有所帮助,谢谢!

如果这有助于所有进入的数据是从设备收到的JSON,并且编码有问题,那么数据如下所示:

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

所以我需要以某种方式访问​​每个疯狂密钥下面的数据。

4 个答案:

答案 0 :(得分:27)

此代码:

$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);

以这种形式产生$ arr2:

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

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

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

这不是你想要的吗?

答案 1 :(得分:1)

一点点递归就可以了解

$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;
}

答案 2 :(得分:0)

我并不完全理解数组的结构,但您可以通过多种方式迭代多维关联数组。这是构建数字索引数组的那个:

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

答案 3 :(得分:0)

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

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

}
print_r($newArray);