我有一个基于重复值将多维数组拆分为子数组的问题。这是问题-
当前数组:
Array (
[2] => first=1
[3] => second=2
[4] => third=
[5] => first=4
[9] => second=3
...
);
预期结果:
Array(
[0] =>
Array(
[first] => 1,
[second] => 2,
[third] =>
...
),
[1] =>
Array(
[first] => 4,
[second] => 3
...
),
);
试图通过这样的操作来实现,但是停留了这么远-
$filtered_array_splitted = [];
$array_tracker = 0;
$array_tracker_in = 0;
foreach ($filtered_array as $key => $value) {
parse_str(str_replace('', '=', $value), $mapped_value_as_pair);
$filtered_array_splitted[$array_tracker++] = array_merge($mapped_value_as_pair);
}
print_r($filtered_array_splitted);
这只是将它们分成子数组,我需要根据重复出现的情况将它们插入。只要找到相同的密钥,就会形成新的子阵列。
这将保留要添加的当前字段列表的列表,然后,如果找到一个已经存在的字段列表(使用isset()
,则它将存储该列表并重新开始。
如果有剩余,最后将它们添加到最终列表中...
$filtered_array_splitted = [];
$current_list = [];
foreach ($filtered_array as $string) {
list($name, $value) = explode("=", $string);
if ( isset($current_list[$name]) ){
$filtered_array_splitted[] = $current_list;
$current_list = [];
}
$current_list[$name] = $value;
}
if ( !empty($current_list)) {
$filtered_array_splitted[] = $current_list;
}