Ex04: $v1, User: $v2\n"; } // 3. Compare each resource type against ex04 equivalent function checkFields($exResource, $userResource, $type) { echo "\n--- $type comparison ---\n"; $exKeys = array_keys($exResource); $usKeys = array_keys($userResource); $diffExtra = array_diff($usKeys, $exKeys); $diffMissing = array_diff($exKeys, $usKeys); echo "User extra fields: " . (empty($diffExtra) ? "None" : implode(', ', $diffExtra)) . "\n"; echo "User missing fields: " . (empty($diffMissing) ? "None" : implode(', ', $diffMissing)) . "\n"; } // Map ex04 resources by type $exByType = []; foreach ($ex04['entry'] as $e) { $t = $e['resource']['resourceType']; if (!isset($exByType[$t])) $exByType[$t] = []; $exByType[$t][] = $e['resource']; } foreach ($bundle['entry'] as $e) { $t = $e['resource']['resourceType']; if ($t === 'Composition') continue; if (isset($exByType[$t][0])) { checkFields($exByType[$t][0], $e['resource'], $t); // Only check once per type unset($exByType[$t]); } }