Yes. I would expect the my_if input clk to be connected to the main_clk_array. Are you seeing something else?
By the way, since you are going with generates for the uvm_config_db call, you may also want to consider generates
around the instantiation of the interface itself (instead of using array of interfaces). This might make your code a little
simpler. Here is a possible solution, with generates around the instantiation and the config_db::set().
for( i = 0; i < 3; i++) begin : r_loop
test_if #(.MY_PARAM(4)) my_if ();
uvm_config_db#(virtual test_if#(.MY_PARAM(4)))::set(uvm_root::get(), inst_name, "vif", my_if);