2013-05-08 29 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));