'events.json', 'speakers' => 'speakers.json', 'tracks' => 'tracks.json', 'event_types' => 'event_types.json', 'halls' => 'halls.json', 'slots' => 'slots.json', ]; if (empty($allowedhallids)) { $allowedhallids = array(6, 7, 8); } function compareKeys($a, $b, $key) { $valA = &$a[$key]; $valB = &$b[$key]; return ($valA < $valB) ? -1 : (($valA > $valB) ? 1 : 0); } $data = []; foreach ($filenames as $name => $filename) { $curl = new SmartCurl($base_url); $json = $curl->getUrl($filename); if ($json === false) { echo 'get failed: ', $filename, PHP_EOL; exit; } $decoded = json_decode($json, true); if ($decoded === false) { echo 'decode failed: ', $filename, PHP_EOL; exit; } $add = true; switch ($name) { case 'halls': $decoded = array_map(function($el) { return $el['name']; }, $decoded); break; case 'slots': $decoded = array_map(function($el) { foreach (['starts_at', 'ends_at'] as $key) { $el[$key] = strtotime($el[$key]); } return $el; }, $decoded); break; } $data[$name] = $decoded; } uasort($data['slots'], function($a, $b) { return compareKeys($a, $b, 'starts_at') ?: compareKeys($a, $b, 'hall_id'); }); $data['halls'] = array_filter($data['halls'], function($key) use ($allowedhallids) { return in_array($key, $allowedhallids); }, ARRAY_FILTER_USE_KEY); return $data;