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

Как правильно преобразовать массив?

Добрый день. Возникла проблема. Есть массив такого вида:
Array ( [0] => Array ( [hero_script_id] => 1 [hero_id] => 5 [hero_name] => hero_name1 [script_name] => script_name1 [post_id] => 1265 [github_link] => urlgit1 [image_src] => url1 ) 
        [1] => Array ( [hero_script_id] => 2 [hero_id] => 8 [hero_name] => hero_name2 [script_name] => script_name2 [post_id] => 1235 [github_link] => urlgit2 [image_src] => url2 ) 
        [2] => Array ( [hero_script_id] => 4 [hero_id] => 8 [hero_name] => hero_name2 [script_name] => script_name4 [post_id] => 1548 [github_link] => urlgit4 [image_src] => url4 ) 
        [3] => Array ( [hero_script_id] => 3 [hero_id] => 9 [hero_name] => hero_name3 [script_name] => script_name3 [post_id] => 1236 [github_link] => urlgit3 [image_src] => url3 ) )

hero_id повторяется. Нужно сформировать новый массив таким образом, чтобы данные сортировались по этому hero_id.
Вот, что у меня получилось на данный момент:
Array ( [5] => Array ( [0] => Array ( [script_name] => script_name1 ) ) 
        [8] => Array ( [0] => Array ( [script_name] => script_name2 ) 
                        [1] => Array ( [script_name] => script_name4 ) )         
        [9] => Array ( [0] => Array ( [script_name] => script_name3 ) ) )

Функция, которую я использую для такого результата:
function by_hero_id($arr) {
  $result = array();
  foreach ($arr as $l) {
    $result[$l['hero_id']][]['script_name'] = $l['script_name'];
  }
  return $result;
}

Что я хочу, чтобы получилось:
Array ( [5] => Array ( [0] => Array ( [script_name] => script_name1 [hero_script_id] => 1 [hero_name] => hero_name1 [post_id] => 1265 [github_link] => urlgit1 [image_src] => url1) ) 
        [8] => Array ( [0] => Array ( [script_name] => script_name2 [hero_script_id] => 2 [hero_name] => hero_name2 [post_id] => 1235 [github_link] => urlgit2 [image_src] => url2) 
                       [1] => Array ( [script_name] => script_name4 [hero_script_id] => 4 [hero_name] => hero_name2 [post_id] => 1548 [github_link] => urlgit4 [image_src] => url4) )         
        [9] => Array ( [0] => Array ( [script_name] => script_name3 [hero_script_id] => 3 [hero_name] => hero_name3 [post_id] => 1236 [github_link] => urlgit3 [image_src] => url3) ) )

Как ни пытался, не получилось продвинутся дальше того, что уже получилось(
  • Вопрос задан
  • 180 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@vyrkmod
Пишу на php. И не стыдно.
$result[$l['hero_id']][] = [
    'script_name' => $l['script_name'],
    'hero_script_id' => $l['hero_script_id'],
    'hero_name' => $l['hero_name'],
    // и всё остальное
]
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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