php 将多维数组中相同的id转换为从0开始计数

php convert same ids in multidimensional array to count from 0

好吧,这一定很简单,但似乎无法弄清楚我在一个数组中有这个字段 range,它打印一个 id,它在数组上自我重复,并想将它转换为顺序从0开始计数

实例:https://3v4l.org/Sf4nI#v7.0.33

当前输出:

Array
(
    [0] => Array
        (
            [range] => 336
            [year] => 2020
            [month] => 222
        )

    [1] => Array
        (
            [range] => 336
            [year] => 2020
            [month] => 222
        )

    [2] => Array
        (
            [range] => 390
            [year] => 2020
            [month] => 222
        )

    [3] => Array
        (
            [range] => 390
            [year] => 2021
            [month] => 222
        )

)

我需要的输出:

Array
(
    [0] => Array
        (
            [range] => 0
            [year] => 2020
            [month] => 222
        )

    [1] => Array
        (
            [range] => 0
            [year] => 2020
            [month] => 222
        )

    [2] => Array
        (
            [range] => 1
            [year] => 2020
            [month] => 222
        )

    [3] => Array
        (
            [range] => 1
            [year] => 2021
            [month] => 222
        )

)

我认为这里的简单解决方案是从数组中提取所有范围值并删除重复值,使其从 0 开始我们将使用 array_values 并将其翻转以按范围获取 id值

$idList = array_flip(array_values(array_unique(array_column($array, 'range'))));

现在您可以像这样获取您想要的任何范围的 ID

$idList[336];
// or 
$idList[390];

https://3v4l.org/kUa8D#v7.0.33

希望对您有所帮助