Задать вопрос
@ganjo888

Как получить массив без повторяющих ключей и с верными значениями?

$data = [
    [
        'organization' => 'Nike',
        'reviewed'         => ['кросовки' => 1, 'бутцы' => 2],
    ],
    [
        'organization' => 'Adidas',
        'reviewed'         => ['кросовки' => 3, 'сланцы' => 4, 'бутцы' => 5],
    ],
];

в результате хочу получить такой массив
$res = [
    'categories' => [
        ['бутцы', 'кросовки', 'сланцы'],
    ],
    'reviewed'   => [
        [2, 1, null],
        [5, 3, 4],
    ],
]

начал получил все категории и дальше не понимаю что и как делать... Подскажите плиз как это всё делается
$newData = [];
foreach ($data as $datum) {
    foreach ($datum['reviewed'] as $key => $item) {
        $newData['categories'][] = $key;
    }
}
$categories = array_unique($newData['categories']);
  • Вопрос задан
  • 119 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
@PeeX
$nextIndex = 0 ;
$map = [];
$categories = [];
$reviewed = [];
foreach ($data as $datum) {
    $crev = [];
    foreach ($datum['reviewed'] as $key => $item) {
        if ( !isset( $map[ $key ] ) ) {
            $map[ $key ] = $nextIndex ;
            $catigories[ $nextIndex ] = $key ;
            $nextIndex++ ;
        }
        $cIndex = $map[ $key ];
        $crev[ $cIndex ] = $item ;
    }
    $reviewed[] = $crev ;
}


не проверял но думаю должно быть примерно что вы хотите
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽