For statement inside setup and loop function

int positions_check[3] = {pos_20_sensorPIN,pos_21_sensorPIN,pos_22_sensorPIN};//assigning them to a table for easier management

Why are you setting positions_check to a bunch of pin numbers here and then

for(int i=0; i<2; i++)
   positions_check[i] = digitalRead positions_check[i]; //reads the current status of the position sensors

setting them to the values read from the pins?

After the first iteration of loop(), they array will contain either 0 or 1, in each position. From then on, you are only reading from two pins that were not among the set you first read from.

You don't seem to understand the difference between the state of a pin and the number of the pin?