Измените Ключи массива на числовой в PHP

Это - вероятно, простой вопрос для Вас php свисты там, но я, может казаться, не нахожу ответ в Google!

У меня есть многомерный массив, каким первым набором ключей названы, и я хочу изменить их в числа как 0, 1, 2..

Если бы это был нормальный массив, то я мог бы установить $newArray = array_values ($multiArr); и это избавилось бы от ключей и сделало бы их числовыми! Но так как его многомерным там является другой набор ключей/значений под этим.

Я мог так или иначе использовать цикл, чтобы циклично выполниться через него и определить каждого? Но затем как я указал бы текущий ключ?

Любой совет помог бы спасибо!

Если это помогает во всех входящих данных, JSON, полученный от устройства и существует что-то не так с кодированием, таким образом, данные похожи на это:

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

Таким образом, я должен так или иначе получить доступ к данным под каждым сумасшедшим ключом.

5
задан Doug Molineux 15 July 2010 в 22:03
поделиться

3 ответа

Этот код:

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

Разве это не то, что вы пытаетесь получить?

27
ответ дан 18 December 2019 в 05:54
поделиться

Я не совсем понял структуру вашего массива, но вы можете выполнять итерацию по многомерному ассоциативному массиву несколькими способами. Вот тот, который создает массив с числовым индексом:

$multiArray = Array(/* stuff */);
$numericArray = Array();
foreach ($multiArray as $key => $val) {
    foreach ($val as $childKey => $childVal) {
        // do something else?
    }
    $numericArray []= $val;
}
0
ответ дан 18 December 2019 в 05:54
поделиться

Небольшая рекурсия делает свое дело

$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;
}
1
ответ дан 18 December 2019 в 05:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: