@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']);
  • Вопрос задан
  • 109 просмотров
Решения вопроса 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 ;
}


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

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

Войти через центр авторизации
Похожие вопросы
Smart Медицина Москва
от 150 000 ₽
Spice IT Recruitment Москва
До 230 000 ₽
Playkot Санкт-Петербург
от 150 000 до 200 000 ₽