$table_definition) { foreach ($table_definition['fields'] as $field => $row_definition) { if (isset($row_definition['foreign key'])) { $f = $row_definition['foreign key']; $index = $f['table'] .'.'. $f['field']; $adj[$index][$table .'.'. $field] = 1; $fk[$table .'.'. $field] = $index; $fk[$index] = $index; $state[$index] = NEEDS_PROCESSING; } } } foreach (array_keys($adj) as $key) { if ($state[$key] == NEEDS_PROCESSING) { $ordered = dfs($state, $adj, $key); } } echo '
';
var_dump($ordered);