ну, это должно быть легко, но я не могу понять это. У меня есть это поле range
в массиве, который печатает идентификатор, который повторяет себя в массиве, и хотел бы преобразовать его в счет последовательность, начиная с 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
и перевернуть его, чтобы получить идентификатор по значению диапазона.
$idList = array_flip(array_values(array_unique(array_column($array, 'range'))));
теперь вы можете получить идентификатор для любого диапазона, который вы хотите, как это
$idList[336];
// or
$idList[390];
https://3v4l.org/kUa8D#v7.0.33
надеюсь, это полезно
@Ered Я редактирую код, чтобы он начинался с 0
не пытаясь удалить дубликаты, просто пытаясь преобразовать идентификаторы диапазонов в последовательность, начинающуюся с 0