Учитывая, что индексы каждой "строки" совпадают, вы можете l oop над ними и объединить их в новый массив, который будет более согласованным, например:
$arr = [
'id' => [
0 => 123,
1 => 456,
2 => 789,
],
'notes' => [
0 => 'Parent Cancel',
1 => 'COVID-19',
2 => 'Parent Cancel',
],
'hours' => [
0 => 0,
1 => 1,
2 => 0,
],
];
$newArr = [];
foreach ($arr['id'] as $index => $id) {
$newArr[$id] = [
'notes' => $arr['notes'][$index],
'hours' => $arr['hours'][$index],
];
}
var_export($newArr);
output:
array (
123 =>
array (
'notes' => 'Parent Cancel',
'hours' => 0,
),
456 =>
array (
'notes' => 'COVID-19',
'hours' => 1,
),
789 =>
array (
'notes' => 'Parent Cancel',
'hours' => 0,
),
)
Обратите внимание, что это работает только до тех пор, пока все индексы всегда (без пробелов) - что должно быть в случае с вашим текущим HTML.
Альтернативный подход будет поставить идентификатор (целое число) в качестве индекса в полях ввода, однако это все равно оставит вас с двумя массивами, которые вам все равно придется объединять (один для заметок и один для часов). Так что это точно не облегчит имхо.