2013-05-08 106 views
0

我多維數組命名爲$cs_map_data如下:如何更改PHP中多維數組的鍵?

Array 
(
    [2] => Array 
     (
      [class_id] => 2 
      [class_name] => II 
      [class_checked] => 0 
      [class_subjects] => Array 
       (
        [0] => Array 
         (
          [cs_map_id] => 81 
          [subject_name] => 11 Engllish 
          [subject_checked] => 0 
          [teacher_cs_id] => 
         ) 

       ) 

     ) 

    [3] => Array 
     (
      [class_id] => 3 
      [class_name] => III 
      [class_checked] => 0 
      [class_subjects] => Array 
       (
        [0] => Array 
         (
          [cs_map_id] => 155 
          [subject_name] => Hidi 
          [subject_checked] => 0 
          [teacher_cs_id] => 
         ) 

        [1] => Array 
         (
          [cs_map_id] => 156 
          [subject_name] => 11 Maths 
          [subject_checked] => 0 
          [teacher_cs_id] => 
         ) 

        [2] => Array 
         (
          [cs_map_id] => 157 
          [subject_name] => 11 Science 
          [subject_checked] => 0 
          [teacher_cs_id] => 
         ) 

        [3] => Array 
         (
          [cs_map_id] => 158 
          [subject_name] => 11 Engllish 
          [subject_checked] => 0 
          [teacher_cs_id] => 
         ) 

       ) 

     ) 

    [4] => Array 
     (
      [class_id] => 4 
      [class_name] => IV 
      [class_checked] => 0 
      [class_subjects] => Array 
       (
        [0] => Array 
         (
          [cs_map_id] => 86 
          [subject_name] => Physics 
          [subject_checked] => 0 
          [teacher_cs_id] => 
         ) 

       ) 

     ) 

    [6] => Array 
     (
      [class_id] => 6 
      [class_name] => VI 
      [class_checked] => 0 
      [class_subjects] => Array 
       (
        [0] => Array 
         (
          [cs_map_id] => 144 
          [subject_name] => Mathematics 
          [subject_checked] => 0 
          [teacher_cs_id] => 
         ) 

        [1] => Array 
         (
          [cs_map_id] => 145 
          [subject_name] => Biology 
          [subject_checked] => 0 
          [teacher_cs_id] => 
         ) 

       ) 

     ) 

    [7] => Array 
     (
      [class_id] => 7 
      [class_name] => VII 
      [class_checked] => 0 
      [class_subjects] => Array 
       (
        [0] => Array 
         (
          [cs_map_id] => 129 
          [subject_name] => Physics 
          [subject_checked] => 0 
          [teacher_cs_id] => 
         ) 

        [1] => Array 
         (
          [cs_map_id] => 130 
          [subject_name] => Chemistry11 
          [subject_checked] => 0 
          [teacher_cs_id] => 
         ) 

        [2] => Array 
         (
          [cs_map_id] => 131 
          [subject_name] => 11 Science 
          [subject_checked] => 0 
          [teacher_cs_id] => 
         ) 

       ) 

     ) 

    [8] => Array 
     (
      [class_id] => 8 
      [class_name] => VIII 
      [class_checked] => 0 
      [class_subjects] => Array 
       (
        [0] => Array 
         (
          [cs_map_id] => 67 
          [subject_name] => Hidi 
          [subject_checked] => 0 
          [teacher_cs_id] => 
         ) 

        [1] => Array 
         (
          [cs_map_id] => 68 
          [subject_name] => 11 Engllish 
          [subject_checked] => 0 
          [teacher_cs_id] => 
         ) 

       ) 

     ) 

    [9] => Array 
     (
      [class_id] => 9 
      [class_name] => IX 
      [class_checked] => 0 
      [class_subjects] => Array 
       (
        [0] => Array 
         (
          [cs_map_id] => 87 
          [subject_name] => Mathematics 
          [subject_checked] => 0 
          [teacher_cs_id] => 
         ) 

        [1] => Array 
         (
          [cs_map_id] => 88 
          [subject_name] => Hidi 
          [subject_checked] => 0 
          [teacher_cs_id] => 
         ) 

        [2] => Array 
         (
          [cs_map_id] => 89 
          [subject_name] => 11 Science 
          [subject_checked] => 0 
          [teacher_cs_id] => 
         ) 

       ) 

     ) 

) 

如果你注意到,數組的鍵是[2],[3],[4],[6],[7],[8],[9]。這些鍵我從某些其他開發人員定義的函數中獲得。現在我的要求是重命名這些鍵,即數組鍵應該是[0],[1],[2],[3],[4],[5],[6]。其他數組元素和其他鍵 - 值對應該保持原樣。我搜索了一下,但無法得到解決方案。任何人都可以幫我重新排列這些數組鍵嗎?提前致謝。我需要的輸出如下:

Array 
    (
     [0] => Array 
      (
       [class_id] => 2 
       [class_name] => II 
       [class_checked] => 0 
       [class_subjects] => Array 
        (
         [0] => Array 
          (
           [cs_map_id] => 81 
           [subject_name] => 11 Engllish 
           [subject_checked] => 0 
           [teacher_cs_id] => 
          ) 

       ) 

     ) 

    [1] => Array 
     (
      [class_id] => 3 
      [class_name] => III 
      [class_checked] => 0 
      [class_subjects] => Array 
       (
        [0] => Array 
         (
          [cs_map_id] => 155 
          [subject_name] => Hidi 
          [subject_checked] => 0 
          [teacher_cs_id] => 
         ) 

        [1] => Array 
         (
          [cs_map_id] => 156 
          [subject_name] => 11 Maths 
          [subject_checked] => 0 
          [teacher_cs_id] => 
         ) 

        [2] => Array 
         (
          [cs_map_id] => 157 
          [subject_name] => 11 Science 
          [subject_checked] => 0 
          [teacher_cs_id] => 
         ) 

        [3] => Array 
         (
          [cs_map_id] => 158 
          [subject_name] => 11 Engllish 
          [subject_checked] => 0 
          [teacher_cs_id] => 
         ) 

       ) 

     ) 

    [2] => Array 
     (
      [class_id] => 4 
      [class_name] => IV 
      [class_checked] => 0 
      [class_subjects] => Array 
       (
        [0] => Array 
         (
          [cs_map_id] => 86 
          [subject_name] => Physics 
          [subject_checked] => 0 
          [teacher_cs_id] => 
         ) 

       ) 

     ) 

    [3] => Array 
     (
      [class_id] => 6 
      [class_name] => VI 
      [class_checked] => 0 
      [class_subjects] => Array 
       (
        [0] => Array 
         (
          [cs_map_id] => 144 
          [subject_name] => Mathematics 
          [subject_checked] => 0 
          [teacher_cs_id] => 
         ) 

        [1] => Array 
         (
          [cs_map_id] => 145 
          [subject_name] => Biology 
          [subject_checked] => 0 
          [teacher_cs_id] => 
         ) 

       ) 

     ) 

    [4] => Array 
     (
      [class_id] => 7 
      [class_name] => VII 
      [class_checked] => 0 
      [class_subjects] => Array 
       (
        [0] => Array 
         (
          [cs_map_id] => 129 
          [subject_name] => Physics 
          [subject_checked] => 0 
          [teacher_cs_id] => 
         ) 

        [1] => Array 
         (
          [cs_map_id] => 130 
          [subject_name] => Chemistry11 
          [subject_checked] => 0 
          [teacher_cs_id] => 
         ) 

        [2] => Array 
         (
          [cs_map_id] => 131 
          [subject_name] => 11 Science 
          [subject_checked] => 0 
          [teacher_cs_id] => 
         ) 

       ) 

     ) 

    [5] => Array 
     (
      [class_id] => 8 
      [class_name] => VIII 
      [class_checked] => 0 
      [class_subjects] => Array 
       (
        [0] => Array 
         (
          [cs_map_id] => 67 
          [subject_name] => Hidi 
          [subject_checked] => 0 
          [teacher_cs_id] => 
         ) 

        [1] => Array 
         (
          [cs_map_id] => 68 
          [subject_name] => 11 Engllish 
          [subject_checked] => 0 
          [teacher_cs_id] => 
         ) 

       ) 

     ) 

    [6] => Array 
     (
      [class_id] => 9 
      [class_name] => IX 
      [class_checked] => 0 
      [class_subjects] => Array 
       (
        [0] => Array 
         (
          [cs_map_id] => 87 
          [subject_name] => Mathematics 
          [subject_checked] => 0 
          [teacher_cs_id] => 
         ) 

        [1] => Array 
         (
          [cs_map_id] => 88 
          [subject_name] => Hidi 
          [subject_checked] => 0 
          [teacher_cs_id] => 
         ) 

        [2] => Array 
         (
          [cs_map_id] => 89 
          [subject_name] => 11 Science 
          [subject_checked] => 0 
          [teacher_cs_id] => 
         ) 

       ) 

     ) 

) 
+1

你見過['array_values'](http://php.net/manual/en/function.array-values.php)嗎? – 2013-05-08 04:23:00

+0

我不知道array_values如何與多維數組一起工作..但你總是可以遍歷數組並將數組複製到一個新數組$ newArr [] = $ oldArraynthElement – Dinesh 2013-05-08 04:42:09

回答

0

這只是一個array_values事戴維建議。

在你的情況下,它看起來像你需要重新索引最下面的數組和'class_subjects'元素。

對於外層而言,這很容易。說整個事情是存儲在變量$a,然後

$a = array_values($a); 

和最外層數組重新索引!

內部陣列是一個更有挑戰性,我建議給foreach試一試,並使用參考價值組件。

同樣,假設最外面的數組存儲在$a而這已經被重新索引,現在

$a = array_values($a); 
foreach($a as $i => &$sub) 
    $sub['class_subjects'] = array_values($sub['class_subjects']); 

,你就大功告成了。

0

由於在這裏您要重新編制外部數組索引,array_values($arr)將與其完美協同工作。 你可以試一試。

<?php 
$arr = array(
    'foo' => 'foo', 
    'bar' => array(
     'baz' => 'baz', 
     'candy' => 'candy', 
     'vegetable' => array(
      'carrot' => 'carrot', 
     ) 
    ), 
    'vegetable' => array(
     'carrot' => 'carrot2', 
    ), 
    'fruits' => 'fruits', 
); 
// Pass your array as argument 
$arr1 = array_values($arr); 
print_r($arr1); 
?> 

如果你想遞歸遍歷到內部數組,你可以參考在array_values給出的實例。希望它能解決你的問題。

0
print_r(array_values($array));