首页 > 解决方案 > 从父数组中删除第一个数组集

问题描述

我有一个包含许多数组集的数组。第一个(外部)数组有一个改变的键。我的目标是输入父数组(同样,密钥未知)并删除第一个数组集。数组集的键从零开始递增 - 理想情况下,这些键将被重新索引。

我考虑过在数组本身上使用一个递增计数的 foreach 循环,array_splice。

当外部数组的键未知时,问题似乎是访问数组集。例如,以下代码无法访问数组集(键已命名,只是未知或可更改)。

foreach ($array[0] as $item)
{
    if ($i < 1)
    {
        unset($item[0]);
    }
    $i++;
}

如果我使用 array_splice 这可能会删除 foreach。

这是原始数组:

            Array
            (
                [changeable] => Array
                    (
                        [0] => Array
                            (
                                [name] => Alpha
                                [score] => 1
                            )

                        [1] => Array
                            (
                                [name] => Beta
                                [score] => 1
                            )

                        [2] => Array
                            (
                                [name] => Gamma
                                [score] => 4
                            )

                        [3] => Array
                            (
                                [name] => Delta
                                [score] => 3
                            )

                        [4] => Array
                            (
                                [name] => Epsilon
                                [score] => 2
                            )

                        [5] => Array
                            (
                                [name] => Zeta
                                [score] => 2
                            )

                    )

            )

这是预期的数组 - 注意:“alpha”数组被删除,键被重新索引。

            Array
            (
                [changeable] => Array
                    (
                        [0] => Array
                            (
                                [name] => Beta
                                [score] => 1
                            )

                        [1] => Array
                            (
                                [name] => Gamma
                                [score] => 4
                            )

                        [2] => Array
                            (
                                [name] => Delta
                                [score] => 3
                            )

                        [3] => Array
                            (
                                [name] => Epsilon
                                [score] => 2
                            )

                        [4] => Array
                            (
                                [name] => Zeta
                                [score] => 2
                            )

                    )

            )

标签: phparrays

解决方案


如果我正确理解您的问题,您可以使用array_shift执行此操作。

$array = [];
        $array['random_key1'] = [
            [

                'name' => 'Alpha',
                'score' => 1
            ],
            [

                'name' => 'Beta',
                'score' => 1
            ],
            [

                'name' => 'Gamma',
                'score' => 4
            ],
            [

                'name' => 'Delta',
                'score' => 3
            ],
            [

                'name' => 'Epsilon',
                'score' => 2
            ],
            [

                'name' => 'Zeta',
                'score' => 2
            ]
        ];

 $array['random_key2'] = [
            [

                'name' => 'Alpha',
                'score' => 1
            ],
            [

                'name' => 'Beta',
                'score' => 1
            ],
            [

                'name' => 'Gamma',
                'score' => 4
            ],
            [

                'name' => 'Delta',
                'score' => 3
            ],
            [

                'name' => 'Epsilon',
                'score' => 2
            ],
            [

                'name' => 'Zeta',
                'score' => 2
            ]
        ];



foreach($array as &$value) {
  array_shift($value);
}


echo '<pre>';
print_r($array);

推荐阅读