2012-01-16 144 views
1

我在這裏有一個問題。比方說,我有一種形式的數組:數組索引操作php

Array 
(
    [0] => Array 
     (
      [0] => Array 
       (
        [A] => Array 
         (
          [id] => 1 
          [firstname] => John 
          [lastname] => Smith 
          [email] => [email protected] 
         ) 

        [B] => Array 
         (
         ) 

       ) 

     ) 

    [1] => Array 
     (
      [0] => Array 
       (
        [A] => Array 
         (
          [id] => 2 
          [firstname] => Tommy 
          [lastname] => Tom 
          [email] => [email protected] 
         ) 

        [B] => Array 
         (
         ) 

       ) 

     ) 

) 

我怎樣才能通過內部數組的索引,以便更換外數組的索引有一個這樣的數組:

Array 
(
     [0] => Array 
      (
       [A] => Array 
        (
         [id] => 1 
         [firstname] => John 
         [lastname] => Smith 
         [email] => [email protected] 
        ) 

       [B] => Array 
        (
        ) 

      ) 



     [1] => Array 
      (
       [A] => Array 
        (
         [id] => 2 
         [firstname] => Tommy 
         [lastname] => Tom 
         [email] => [email protected] 
        ) 

       [B] => Array 
        (
        ) 

      ) 



) 

提前致謝!

+0

不知道爲什麼有人downvoted這一點,似乎是一個合理的問題給我。 – 2012-01-16 16:37:41

+0

我可以在兩者中看到的區別是第三級數組成爲第二級數組。你有沒有試過簡單地去:'不尋常的陣列[0] =不尋常的陣列[0] [0]'? – 2012-01-16 16:42:43

回答

2

您必須遍歷數組並根據內部值創建一個新數組。

$in_array = <your array>; 
$out_array = Array(); 

foreach($in_array as $k => $v) { 
    $out_array[$k] = array_shift($v); 
} 

這裏,$out_array[$k]保持原始頂層數組鍵,和array_shift($v)說向下挖掘的值(使用array_shift取值在中等水平陣列中的第一元件中的一個電平,並應用它作爲新數組的值)。

+0

謝謝你,你救了我三個小時!!! – user765368 2012-01-16 16:45:09

+0

很高興爲您效勞! – 2012-01-16 16:46:10

-1
//$array is your array 
foreach($array as $key=>$value) 
{ 
    $new_array[] = $array[$key]; 
} 
3

另一種選擇,爲您的特定情況下,可以簡單:

$out = array_map('reset', $in); 
+0

+1,好想法! Ruby是我的主要語言,我真的應該想到這個=)。 – 2012-01-17 00:31:00