我有一个关联数组,其中的键是像软件发布版本号一样编号的,例如
我的代码...
32.1
。我想做的是将32.1
之后的每个版本(32.2、32.3、32.4等)分配到另一个数组中,在32
键下,更重要的是,我需要脚本递归执行,以便具有多个发行版的更长版本号最终出现在正确的数组键中。我的代码...
<?php
$array = array(
'1' => 'Level 1',
'1-1' => 'Level 1',
'1-2' => 'Level 1',
'1-2-1' => 'Sub-Level 1',
'2' => 'Level 2',
'3' => 'Level 3'
);
foreach ($array as $key => $value) {
static $assoc = array();
if (preg_match('/-/', $key)) {
$points = explode('-', $key);
$assoc_key = basename($key, '-' . end($points));
$assoc[$assoc_key]['sub'][$key] = array('1' => 'Sub-' . $array[end($points)]);
} else {
$assoc[$key] = array('1' => $array[$key]);
}
}
echo '<pre>' . print_r($assoc, true) . '</pre>';
?>
期望输出:
Array
(
[1] => Array
(
[1] => Level 1
[sub] => Array
(
[1-1] => Array
(
[1] => Sub-Level 1
)
[1-2] => Array
(
[1] => Sub-Level 2
[sub] => Array
(
[1-2-1] => Array
(
[1] => Sub-Sub-Level 1
)
)
)
)
)
[2] => Array
(
[1] => Level 2
)
[3] => Array
(
[1] => Level 3
)
)
实际输出
Array
(
[1] => Array
(
[1] => Level 1
[sub] => Array
(
[1-1] => Array
(
[1] => Sub-Level 1
)
[1-2] => Array
(
[1] => Sub-Level 2
)
)
)
[1-2] => Array
(
[sub] => Array
(
[1-2-1] => Array
(
[1] => Sub-Level 1
)
)
)
[2] => Array
(
[1] => Level 2
)
[3] => Array
(
[1] => Level 3
)
)
有人可以帮忙吗?
我知道我错过了什么简单的东西,但是我已经尝试了两天,还是无法让它工作。