Вы можете использовать basename(__FILE__)
, чтобы найти имя исполняемого в данный момент скрипта и удалить его из массива файлов.
<?php
$files = glob(realpath('./') . '/*.*');
// Ensure the current script is not chosen.
$currentFile = basename(__FILE__);
if (array_key_exists($currentFile, $files)) {
unset($files[$currentFile]);
}
$file = array_rand($files);
echo basename($files[$file]);
Обновление
Приведенный выше код не будет работать, поскольку $key
в $files
является числовым. Нам нужно перебрать файлы и проверить basename
каждого из них. Если он найден, сбросьте его. Есть более эффективные способы справиться с этим, но это должно быть хорошо для небольшого (ish) каталога.
<?php
$files = glob(realpath('./') . '/*.*');
// Ensure the current script is not chosen.
$currentFile = basename(__FILE__);
foreach ($files as $key => $file) {
if (basename($file) === $currentFile) {
unset($files[$key]);
}
}
$randomFile = array_rand($files);
echo basename($files[$randomFile]);