Я начну этот ответ с рассмотрения «пунктов». Что примечательно, так это то, что когда в «элементах» есть только 1 элемент, он сразу появляется, но если имеется несколько элементов, используется числовой массив элементов. Поэтому давайте сделаем для этого некоторые функции, просто чтобы исправить это несоответствие.
function getItems($itemArray)
{
// get the items in the item array
$items = $itemArray['item'];
// multiple items, in a numeric array, are returned as they are
if (array_keys($items) === range(0, count($items) - 1) return $items;
// whereas a single items is placed in a numeric array
return [$items];
}
Мы можем применить это к любым «пунктам».
Теперь у меня проблема, потому что вы не дали мне достаточно информации. Я не знаю, к чему вы относите эти два массива. Поэтому я должен предположить, что вы можете получить их. Это предметы. Давайте дадим им имя: «начальная точка». Это выбрано совершенно случайно.
function processStartpoint($startpoint)
{
// first get the department items
$departments = getItems($startpoint);
// process each department
foreach ($departments as $department) {
// get department info
$departmentId = $department['department_id'];
$departmentName = $department['department_name'];
$departmentShortName = $department['department_shortname'];
// walk through each hour
foreach (getItems($department['hours']) as $hour) {
// get hour info
$ActivityId = $hour['activity_id'];
$StartDate = $hour['start_date'];
$EndDate = $hour['end_date'];
$StartTime = $hour['start_time'];
$EndTime = $hour['end_time'];
$HourCode = $hour['hour_code'];
$ForeignHourCode = $hour['foreign_hour_code'];
$Amount = $hour['amount'];
$Type = $hour['type'];
$LaborCost = $hour['labor_cost'];
/*
store this in your database
*/
}
}
}
Теперь у меня нет реального способа проверить, работает ли этот код, но что-то вроде этого будет. Настоящий трюк в функции getItems()
, она реагирует на структуру массива.