Я посмотрел на все подобные вопросы и примеры (их много), но все еще не могу заставить это работать (хотя я думаю, что я близок).
У меня есть массив расписаний сотрудников, извлеченных изтекстовый файл ...
schedule.txt:
123,Joe,20120208,0845,1645
123,Joe,20120209,0800,1600
456,Sue,20120208,0900,1700
456,Sue,20120209,0700,1500
...
Мой код для создания массива:
$schedule = file_get_contents('./schedule.txt');
$s = explode("\n", $schedule);
for ($i = 0; $i < count($s); $i++) {
$s[$i] = explode(",", $s[$i]);
}
print_r($s);
Вывод:
Array
(
[0] => Array
(
[0] => 123
[1] => Joe
[2] => 20120208
[3] => 0845
[4] => 1645
)
[1] => Array
(
[0] => 123
[1] => Joe
[2] => 20120209
[3] => 0800
[4] => 1600
)
[2] => Array
(
[0] => 456
[1] => Sue
[2] => 20120208
[3] => 0900
[4] => 1700
)
[3] => Array
(
[0] => 456
[1] => Sue
[2] => 20120209
[3] => 0700
[4] => 1500
)
)
Вместо этого я пытаюсь сгруппировать сотрудников по Id в новый многомерный массив с выводом, подобным следующему:
Array
(
[123] => Array
(
[0] => Array
(
[0] => Joe
[1] => 20120208
[2] => 0845
[3] => 1645
)
[1] => Array
(
[0] => Joe
[1] => 20120209
[2] => 0800
[3] => 1600
)
)
[456] => Array
(
[0] => Array
(
[0] => Sue
[1] => 20120208
[2] => 0900
[3] => 1700
)
[1] => Array
(
[0] => Sue
[1] => 20120209
[2] => 0700
[3] => 1500
)
)
)
Я не могу за всю свою жизнь обернуться, как изменить существующий массив вэтот новый (другой) вывод ... я пытаюсь это, но ничего не получаю:
$newArr = array();
foreach($s as $k => $v) {
if(!isset($newArr[$v[0]])) {
$newArr[$v[0]] = array();
}
$newArr[$v[0]][] = array($v[0]);
}
Хотя мой вывод сейчас:
Array
(
[123] => Array
(
[0] => Array
(
[0] => 123
)
[1] => Array
(
[0] => 123
)
)
[456] => Array
(
[0] => Array
(
[0] => 456
)
[1] => Array
(
[0] => 456
)
)
)
Есть мысли?Я знаю, что в моем коде что-то отсутствует в строке:
$newArr[$v[0]][] = array($v[0]);
Я попытался изменить его на:
$newArr[$v[0]][] = array(0 => $v[1], 1 => $v[2], 2 => $v[3], 3 => $v[4]);
, что дает мой правильный вывод, но теперь я получаю неопределенное смещениеошибки.Кроме того, если количество ключей в подмассиве изменяется, этот код теперь ограничен 4, которые я явно ввел ...