У меня есть массив, структурированный примерно так (именно так 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
),
)
Моя попытка до сих пор сработала, однако мне пришлось жестко закодировать некоторые индексы. Какое лучшее решение для достижения желаемой структуры?
Я немного не уверен, что это то, что вы ищете …
<?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, а также, если $ люди когда-либо установлены.
Других решений пока нет …