一旦发现重复值,将php多维数组拆分为子数组

问题描述 投票:0回答:1

我有一个基于重复值将多维数组拆分为子数组的问题。这是问题-

当前数组:

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);

这只是将它们分成子数组,我需要根据重复出现的情况将它们插入。只要找到相同的密钥,就会形成新的子阵列。

php arrays multidimensional-array
1个回答
1
投票

这将保留要添加的当前字段列表的列表,然后,如果找到一个已经存在的字段列表(使用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;
}
© www.soinside.com 2019 - 2024. All rights reserved.