Для вашего кода ваш массив уже отсортирован по дате. Вы использовали array_multisort для сортировки массива. Ваш массив «$ files» отсортирован от самой новой к самой старой дате изменения. Если вы собираетесь использовать цикл «foreach», вам придется использовать счетчик, чтобы отслеживать первые 3 элемента.
Однако, если вы измените свой цикл на цикл for, вам не придется ничего отслеживать. У вас в основном есть 2 цикла for. Первый печатает первые 3 элемента, а следующий печатает остальные. Если есть только 1 файл. Этот файл будет выделен красным. Если существует более 3 файлов, первые 3 будут выделены красным, а остальные не будут.
<?php
array_multisort(array_map('filemtime', ($files = glob("*.xlsx"))), SORT_DESC, $files);
$arrLength = count($files);
for ( $i = 0; $i < ($arrLength > 3? 3 : $arrLength); $i++ ){
echo'
<tr>
<div id="p1" style="display: none;">LINK/'.$files[$i].'</div>
<td class="file_new"><p style="color:red;">NEWEST FILE</p><a href="LINK/'.$files[$i].'" target="_blank">'.$files[$i].'</a>
<td class="file_new"><button class="button_delete" title="Smazat" type="submit" name="name" value="'.$files[$i].'" onclick="return confirm(\'Opravdu chcete smazat '.$files[$i].'?\')"/></button></td>
</tr>
';
}
for ( $i = 3; $i < $arrLength; $i++ ){
echo'
<tr>
<div id="p1" style="display: none;">LINK/'.$files[$i].'</div>
<td><a href="LINK/'.$files[$i].'" target="_blank">'.$files[$i].'</a>
<td><button class="button_delete" title="Smazat" type="submit" name="name" value="'.$files[$i].'" onclick="return confirm(\'Opravdu chcete smazat '.$files[$i].'?\')"/></button></td>
</tr>
';
}