我有一个问题可以从普通数组(列表(构建关联数组。
我有这个:
$ array = [ 't1/t1sub', 't1/t2sub', 't2/t1sub', 't3/t1sub', 't1/t4sub', 't4', 't1/t2sub/t1subsub', 't1/t2sub/t2subsub' ];
现在我想要这个:
$ target = [ " T1" => [ " t1sub", " t2sub" => [ " t1subsub", " t2subsub" ],, " t4sub", ],, " T2" => [ " t1sub", ],, " T3" => [ " t1sub", ],, " T4" 这是给出的
感谢您的帮助。
您可以在已经开始的循环中执行此操作。
$target = [];
foreach ($array as $item) {
list($key, $value) = explode('/', $item);
if (!isset($target[$key])) {
$target[$key] = [$value];
} else {
$target[$key][] = $value;
}
}
var_dump($target);
您只需要将元素切成两半,然后将下半部分推成了由上半年键的子阵列。
代码(演示(
$array = ['t1/t1sub', 't1/t2sub', 't2/t1sub', 't3/t1sub', 't1/t4sub'];
foreach ($array as $v) {
$x = explode("/", $v);
$result[$x[0]][] = $x[1];
}
var_export($result);
输出:
array (
't1' =>
array (
0 => 't1sub',
1 => 't2sub',
2 => 't4sub',
),
't2' =>
array (
0 => 't1sub',
),
't3' =>
array (
0 => 't1sub',
),
)