Como imprimir las horas dentro de un rango con un foreach en php

Tengo un array multidimensional, donde están guardadas las horas de esta forma, 01:00AM – 02:00AM – 03:00AM etc… luego tengo un selector donde se elije una hora de inicio y una hora final, es decir puedo seleccionar por ejemplo de 03:00AM hasta 08:00AM, entonces lo que deseo es que en la base de datos en un campo se me registren todas las horas desde las 03:00am hasta las 08:00am, es decir quedaría así 03 04 05 06 07 08 solamente las horas que están dentro de ese rango que hemos elegido.

Entonces en una variable llamada inicio $inicio he guardado el valor de la hora inicial ejemplo: 03:00am esto lo traigo desde el selector de hora, en otra variable tengo guardada la hora final $fin

Entonces recorro las horas con un foreach, el problema esta en que me repite las horas de la mañana y de la tarde, por ejemplo: de 3am a 6am me las registra, pero también me registra de 3pm a 6pm esto ocurre creo por la condición del if() que esta dentro del foreach, no se como hacer para que no se repita las horas, que solo me registre el rango deseado, si por ejemplo deseo, de 3am a 6am que no queden también registradas de 3pm a 6pm.

Dejo el código por si me ayudan con esto y gracias!

                                   1=>array(1=>"01:00AM"),
                                   2=>array(2=>"02:00AM"),
                                   3=>array(3=>"03:00AM"),
                                   4=>array(4=>"04:00AM"),
                                   5=>array(5=>"05:00AM"),
                                   6=>array(6=>"06:00AM"),
                                   7=>array(7=>"07:00AM"),
                                   8=>array(8=>"08:00AM"),
                                   9=>array(9=>"09:00AM"),
                                 10=>array(10=>"10:00AM"),
                                 11=>array(11=>"11:00AM"),
                                 12=>array(12=>"12:00PM"), 
                                 13=>array(13=>"01:00PM"),
                                 14=>array(14=>"02:00PM"),
                                 15=>array(15=>"03:00PM"),
                                 16=>array(16=>"04:00PM"),
                                 17=>array(17=>"05:00PM"),
                                 18=>array(18=>"06:00PM"),
                                 19=>array(19=>"07:00PM"),
                                 20=>array(20=>"08:00PM"),
                                 21=>array(21=>"09:00PM"),
                                 22=>array(22=>"10:00PM"), 
                                 23=>array(23=>"11:00PM"));  


$nuevoFormato = '';
$inicio = $lunesdesde;
$fin    = $luneshasta;


foreach($horario as $grupo) {
    foreach($grupo as $status) {
       
        $nuevoFormato = $status;
        
        if($nuevoFormato >= $inicio && $nuevoFormato <= $fin) {
         
          // Pasamos todos los datos a $contenido
            $contenido.= $status.PHP_EOL;
                                      
            
                }// fin del if

          }// fin del foreach
     }// fin del foreach ```