Così alla fine del ciclo ti restituisce correttamente i due nomi diversi. Ovviamente se carichi solo un file, $nomefile1 non sarà valorizzata.

Quindi prima di fare l'inserimento ti conviene vedere se il campo file[0] del form è stato compilato, e ti valorizzi la variabile. Stessa cosa naturalmente per il secondo file

Codice PHP:
<form action="" method="post" enctype="multipart/form-data">


file:
<input type="file" name="file[]" />
<input type="file" name="file[]" />
<input type="submit" name="send" value="Send" />
</p>
</form>

<?php

if (isset($_POST["send"])) {
    
$i 0;
foreach (
$_FILES["file"]["error"] as $key => $error) {
    if (
$error == UPLOAD_ERR_OK) {
        
$tmp_name $_FILES["file"]["tmp_name"][$key];
        
$name $_FILES["file"]["name"][$key];
        
        
// controllo se il file esiste
        
if (file_exists('../files/'.$_FILES["file"]["name"][$key])) {
        echo 
$_FILES["file"]["name"][$key]."

File già esistente sul server. Rinominarlo e riprovare.</p>"
;
      
      break;
    }
        
$valore = array($_FILES["file"]["name"][$key]);
        
$nomefile[$i] = $valore[0];
        
       
// echo 'img= '.$nomefile[$i];
       // move_uploaded_file($tmp_name, "../files/$name");
       
$i++;
    }
}

echo 
"nome file 1: " $nomefile[0] . "
nome file 2: " 
$nomefile[1];
}
?>