【发布时间】:2011-10-30 07:34:27
【问题描述】:
我需要将数组键指示结构的平面数组转换为嵌套数组,其中父元素变为元素零,即在示例中:
$education['x[1]'] = 'Georgia Tech';
需要转换成:
$education[1][0] = 'Georgia Tech';
这是一个示例输入数组:
$education = array(
'x[1]' => 'Georgia Tech',
'x[1][1]' => 'Mechanical Engineering',
'x[1][2]' => 'Computer Science',
'x[2]' => 'Agnes Scott',
'x[2][1]' => 'Religious History',
'x[2][2]' => 'Women\'s Studies',
'x[3]' => 'Georgia State',
'x[3][1]' => 'Business Administration',
);
输出应该是这样的:
$education => array(
1 => array(
0 => 'Georgia Tech',
1 => array( 0 => 'Mechanical Engineering' ),
2 => array( 0 => 'Computer Science' ),
),
2 => array(
0 => 'Agnes Scott',
1 => array( 0 => 'Religious History' ),
2 => array( 0 => 'Women\'s Studies' ),
),
3 => array(
0 => 'Georgia State',
1 => array( 0 => 'Business Administration' ),
),
);
我已经用头撞墙好几个小时了,但仍然无法正常工作。我想我已经看得太久了。提前致谢。
附:它应该是完全可嵌套的,即它应该能够转换如下所示的键:
x[1][2][3][4][5][6]
附言@Joseph Silber 有一个聪明的解决方案,但不幸的是,使用 eval() 不是一个选项,因为它是一个 WordPress 插件,而 WordPress 社区正试图杜绝使用 eval()。
【问题讨论】:
-
真是个泡菜...介意我问一下输入是怎么结束的...?
-
@PlaqueEditor 这就是使用自定义 WordPress 插件将它作为 meta_keys 存储在 wp_postmeta 中的方式。
-
当遇到
x[2][2]这样的键时,你怎么知道它应该是x[2][2] = 'whatever'还是x[2][2][0] = 'whatever'? -
@Joseph Silber - 好问题。也许应该永远是
x[2][2][0].让我考虑一下。 -
@Joseph Silber - 好收获。我认为我的输出示例有问题。我已经更新了它,我的更新是否更有意义? (请注意,这会导致我头晕目眩,所以我仍然可能认为它是“错误的”。) 感谢您的帮助。
标签: php multidimensional-array