php使用组合数字和字符串键重新索引关联数组中的数字键

时间:2017-08-13 00:16:09

标签: php arrays

我有这个数组

 [20_fill_1] => Array
    (
        [autoTuned] => Array
            (
                [0] => fill-0*6.35*6.6*legitPhraseWith*VMWshkqbhfA*fill_3.mp4
            )

        [fill] => Array
            (
                [0] => fill-0*6.35*6.6*subwordPhraseWith*VMWshkqbhfA*fill_4.mp4
            )

        [1] => fill-0*6.35*6.6*legitPhraseWith*VMWshkqbhfA*fill_3.mp4
        [ill] => Array
            (
                [oil] => Array
                    (
                        [0] => oil-0*6.8*7.05*similarSubwordPhraseWith*HZNbg-1bz1c*oil_4.mp4
                    )

            )

    )

没有[0]的原因是因为我没有设置它。现在我希望[1]成为新的[0],如果有更多的数字键,我希望它们也改变,所以数字键是有序的。但是,我需要保留字符串键。

编辑:在删除第0个元素之前,这是数组:

[20_fill_1] => Array
    (
        [0] => added#fill-0*6.35*6.6*subwordPhraseWith*VMWshkqbhfA*fill_4.mp4
        [autoTuned] => Array
            (
                [0] => fill-0*6.35*6.6*legitPhraseWith*VMWshkqbhfA*fill_3.mp4
            )

        [fill] => Array
            (
                [0] => fill-0*6.35*6.6*subwordPhraseWith*VMWshkqbhfA*fill_4.mp4
            )

        [1] => fill-0*6.35*6.6*legitPhraseWith*VMWshkqbhfA*fill_3.mp4
        [ill] => Array
            (
                [oil] => Array
                    (
                        [0] => oil-0*6.8*7.05*similarSubwordPhraseWith*HZNbg-1bz1c*oil_4.mp4
                    )

            )

    )

2 个答案:

答案 0 :(得分:1)

如果你的数组不是很大,你可以构建另一个数组:

&

$output = []; foreach ($original as $key => $item): if(is_string($key)) $output[$key] = $item; else $output[] = $item; endforeach; 就是你想要的。

更新

你也可以在数组的开头取消(插入)一个虚拟元素,然后移动(移除)它。这将重新键入数字键并保留字符串键:

$output
感谢@brennonbrimhall的灵感。

答案 1 :(得分:0)

请考虑使用array_shift,而不是取消设置0th元素。它将自动删除0th元素,重新索引其他数字索引,并保留非数字键和值。