No, non va bene il foreach come è stato costruito: spreca tantissime risorse. Partiamo con un po' di teoria e qualche dato.

In primo luogo sappiamo che i checkbox degli utnti che si desidera modificare si chiama chk.
Per poter agire sull'array, quindi, dovremo richiamare la variabile $_POST['chk']. Per come è stato strutturato il form, però, sappiamo anche che $_POST['chk'] è a sua volta un array.
Sappiamo anche che le checkbox non selezionate non appaiono nell'array $_POST['chk'].
Detto questo la domanda che ti poni è la seguente: come fare ad individuare i checkbox selezionati?

La risposta è molto semplice:

Codice PHP:
if( isset( $_POST['chk'] ) ) {
    
// Esiste almeno una checkbox selezionata
    // Eseguo il freach per vedere su quali id operare
    
foreach( $_POST['chk'] as $id_utente ) {
        
// A questo punto hai nella variabile $id_utente
        // il valore dell'id dell'utente corrente estratto dal
        // foreach. In base a come viene gestita la cosa
        // abiliterai o meno l'utente. Nell'esempio io lo abilito
        // impostando ad 1 un campo di una tabella
        
$query 'UPDATE users SET abilitato = 1 WHERE id_utente = ' $id_utente ;
        
mysql_query$query ) ;
    }
} else {
    die( 
'Nessun utente selezionato' ) ;

Come vedi il procedimento da seguire è molto semplice. Se non ti fosse chiaro qualcosa dimmelo che te lo spiego. Ciao!