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


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

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

Похожие вопросы