У меня есть скрипт, который просматривает каждое имя файла в каталоге и удаляет ненужные файлы. Сумма других вещей, это совпадает с именами файлов в файле CSV, а затем удаляет файл в соседней ячейке.
<?php
$gameList = trim(shell_exec("ls -a -1 -I . -I .. -I Removed"));
$gameArray = explode("\n", $gameList);
shell_exec('mkdir -p Removed');
echo "\033[01;32m\n\n<<<<<<<<<<Starting Scan>>>>>>>>>>\n\n";
// Do the magic for every file
foreach ($gameArray as $thisGame)
{
// Ensure continue if already removed
if (!$thisGame) continue;
if (!file_exists($thisGame)) continue;
// Manipulate names to look and play nice
$niceName = trim(preg_replace('%[\(|\[].*%', '', $thisGame));
$thisGameNoExtension = preg_replace('/\.' . preg_quote(pathinfo($thisGame, PATHINFO_EXTENSION) , '/') . '$/', '', $thisGame);
// Let the user know what game is being evaluated
echo "\033[00;35m{$thisGameNoExtension} ... ";
$f = fopen("ManualRegionDupes.csv", "r");
while ($row = fgetcsv($f))
{
if ($row[1] == $thisGameNoExtension)
{
$primaryFile = $row[0];
$ext = pathinfo($thisGame, PATHINFO_EXTENSION);
$fCheck = trim(shell_exec("ls -1 " . escapeshellarg($primaryFile) . "." . escapeshellarg($ext) . " 2>/dev/null"));
if ($fCheck)
{
echo "ECHO LION";
shell_exec("mv " . escapeshellarg($thisGame) . " Removed/");
continue;
}
else
{
echo "ECHO ZEBRA";
continue;
}
break;
}
}
fclose($f);
echo "Scanned and kept";
}
echo "\033[01;32m\n<<<<<<<<<<Process Complete>>>>>>>>>>\n\n";
?>
Это работает, однако я не понимаю, почему я вижу финальное эхо «Отсканировано и сохранено» сразу после «ECHO ZEBRA» или «ECHO LION» — так как у меня сразу после них «продолжаются» вызовы, которые должны перезапустить цикл и перейдите к следующему файлу. Я уверен, что мне просто нужно что-то перенастроить, но я возился часами и совершенно ошеломлен. Я был бы очень признателен за любую помощь! Большое спасибо!
continue
просто работает для внутреннего цикла, который читает отдельные строки. Если вы хотите пропустить до конца внешнего цикла, вам нужно будет использовать …
continue 2;
Это позволяет вам сказать, продолжить для 2 уровней цикла.
У вас нет ничего, кроме перерыва после ваших дальнейших звонков, что еще он будет работать? Отредактируйте, если вы хотите продолжить во внешнем цикле, переместите его туда. Почему downvote, продолжение просто в неправильном цикле.