![](/img/trans.png)
[英]How to change multidimensional php array into simple associative array with values as keys?
[英]How to change the keys of multidimensional array in PHP?
我的多维数组$cs_map_data
如下:
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] =>
)
)
)
)
正如Dave建议的那样,这只是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']);
一切都完成了。
如此处所示,您想重新索引外部数组索引, array_values($ arr)将与之完美配合。 您可以尝试使用example。
<?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中给出的示例。 希望它能解决您的问题。
print_r(array_values($array));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.