Can't figure how to debounce this

int last_debounce_time[8] = { 0, 0, 0, 0, 0, 0, 0, 0 };

int? Time is ALWAYS stored in an unsigned long.

int buttons_state[8];
int buttons_last_state[8] =  { LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW };

int? To hold HIGH or LOW?

You really need to spend some time learning what appropriate types to use.

  for(int i = 0;i<num_buttons;i++)
  {
    Serial.print(buttons_state[i]);
  }
  Serial.println("");
  delay(1);

By the time this gets done, your switches will be done bouncing. Why you think you need more code to deal with bouncing is a mystery that we (i.e. you) need to solve first.