1, 'add_tables' => 1, 'change_columns' => 2, 'add_columns' => 2, 'drop_keys' => 2, 'drop_columns' => 2, 'add_primary_keys' => 2, // perform_schema_changes only uses one level, but second is in the function 'add_unique_index' => 2, 'add_index' => 2, ); foreach ($nested_level as $change_type => $data_depth) { if (!empty($schema_changes[$change_type])) { foreach ($schema_changes[$change_type] as $key => $value) { if ($data_depth === 1) { $steps[] = array( 'dbtools.perform_schema_changes', array(array( $change_type => array( (!is_int($key)) ? $key : 0 => $value, ), )), ); } else if ($data_depth === 2) { foreach ($value as $key2 => $value2) { $steps[] = array( 'dbtools.perform_schema_changes', array(array( $change_type => array( $key => array( $key2 => $value2, ), ), )), ); } } } } } return $steps; } }