2010-07-15 93 views
6

這可能是一個簡單的問題,你php的whizzes在那裏,但我似乎無法在谷歌中找到答案!將陣列鍵更改爲數字在PHP中

我有第一組鍵被命名的多維數組,我想將它們轉換爲數字如0,1,2 ..

如果這是一個正常的數組我可以設置$ newArray = array_values($ multiArr);它會擺脫鑰匙,並使他們數字!但是,由於它的多維性,在這之下還有一組鍵/值。

我可以以某種方式使用一個循環來遍歷它並定義每一個?但是,我將如何指定當前的密鑰?

任何意見將有助於謝謝你!

如果這有助於在從設備接收到的JSON所有的數據到來,讓數據看起來像這樣有一些錯誤的編碼:

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

所以我需要以某種方式獲得訪問數據在每個瘋狂的密鑰下面。

回答

23

此代碼:

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

是不是你想要得到什麼?

+0

這個作品我沒有意識到這一點,可以使用這樣的,謝謝了! – 2010-07-15 22:07:25

+0

Yep:array_values()不會擾亂數組的較低級別。 – JavadocMD 2010-07-15 22:12:46

+0

您的測試數據是**不是**多維,*鍵控*數組。你的第二個深度數組已經從0開始索引。 – 2010-07-15 22:16:24

0

我並沒有完全理解數組的結構,但可以通過多種方式遍歷多維關聯數組。這裏有一個是建立一個數字索引數組:

$multiArray = Array(/* stuff */); 
$numericArray = Array(); 
foreach ($multiArray as $key => $val) { 
    foreach ($val as $childKey => $childVal) { 
     // do something else? 
    } 
    $numericArray []= $val; 
} 
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; 
} 
+0

「我有一個多維數組,它的第一組鍵被命名,我想把它們改成數字,如0,1,2 ......」這表明原始海報只想重新索引第一個水平。 – JavadocMD 2010-07-15 23:21:26

+0

這真是我正在尋找的東西!謝謝! – 2013-11-16 20:57:17