PHP массив сортировки многомерный

У меня есть массив, структурированный примерно так (именно так CSV форматирует его):

Array(

0 => Array(
0 => person1
1 => person2
2 => person3
//all the way to 9
),

1 => Array(
0 => id belonging to person 1
1 => id belonging to person 2
2 => id belonging to person 3
),

2 => Array(
0 => id belonging to person 1
1 => id belonging to person 2
2 => id belonging to person 3
),

//all the way to 20
)

Я пытаюсь отсортировать новый массив (массивов), где каждый индекс является значением, соответствующим ключу в 0 Индекс выше. т.е. person1 указывает на массив со всеми идентификаторами из массивов 1-20 снаружи.

В каждом из массивов после индекса 0, он содержит 20 идентификаторов, 0 принадлежит ключу 0 в первом массиве.

Структура, которую я пытаюсь достичь, показана ниже:

Array(
[person1] => Array(
id belonging to person 1
id belonging to person 1
id belonging to person 1
),

[person2] => Array(
id belonging to person 2
id belonging to person 2
id belonging to person 2
),

[person3] => Array(
id belonging to person 3
id belonging to person 3
id belonging to person 3
),
)

Моя попытка до сих пор сработала, однако мне пришлось жестко закодировать некоторые индексы. Какое лучшее решение для достижения желаемой структуры?

1

Решение

Я немного не уверен, что это то, что вы ищете …

<?php

$arr = Array(

0 => Array(
0 => "person1",
1 => "person2",
2 => "person3"//all the way to 9
),

1 => Array(
0 => "id belonging to person 1",
1 => "id belonging to person 2",
2 => "id belonging to person 3"),

2 => Array(
0 => "id belonging to person 1",
1 => "id belonging to person 2",
2 => "id belonging to person 3")
);

foreach($arr[0] AS $id=>$name)
{
$ids[$id] = $name;
}

foreach(array_slice($arr,1) AS $persons)
{
foreach($persons AS $id=>$person)
{
// make sure to check if $ids[$id] exist and handle it as you like.
// if(isset($ids[$id]))
$people[$ids[$id]][] = $person;
}
}print_r($people);

?>

результат:

Array
(
[person1] => Array
(
[0] => id belonging to person 1
[1] => id belonging to person 1
)

[person2] => Array
(
[0] => id belonging to person 2
[1] => id belonging to person 2
)

[person3] => Array
(
[0] => id belonging to person 3
[1] => id belonging to person 3
)

)

РЕДАКТИРОВАТЬ: Следует отметить, что я не проверяю, существует ли идентификатор человека в массиве $ ids, а также, если $ люди когда-либо установлены.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector