Проблема здесь заключается в сохранении ключей для нужного идентификатора. У вас есть несколько именных строк с одинаковым ключом (например, Blå и Röd). Вам либо нужно хранить их в массиве, либо вы готовы потерять ключ.
Пример с php5.3:
$processed = array_map(function($a) { return array_pop($a); }, $arr);
Это даст вам:
[0] => Röd
[1] => Blå
[2] => Bobo
[3] => Grön
[4] => Sten
[5] => Vit
[6] => Guld
[7] => Lyxig
Стало ясно, что ключи во внутреннем массиве должны быть сохранены, потому что они являются своего рода идентификатором. С учетом сказанного вы должны изменить конечную структуру, к которой вы стремитесь, потому что вы можете иметь 2 одинаковых ключа в одном массиве. Самая простая структура становится:
[8] => Array
(
[0] => Röd,
[1] => Blå,
[2] => Vit,
[3] => Grön
)
[6] => Array
(
[0] => Bobo,
[1] => Lyxig
)
[7] => Array
(
[0] => Sten,
[1] => Guld
)
Чтобы получить эту структуру, будет работать простой цикл:
$processed = array();
foreach($arr as $subarr) {
foreach($subarr as $id => $value) {
if(!isset($processed[$id])) {
$processed[$id] = array();
}
$processed[$id][] = $value;
}
}