как передать значение в цикле foreach в php, когда в нем есть выход - PullRequest
0 голосов
/ 24 февраля 2019

Это примерно такая ситуация:

Для копирования файлов в файловом менеджменте я использую флажки, по которым можно щелкнуть.Каждый флажок имеет свое значение;файл!Например: uploads/image1.jpg или uploads/image2.jpg

Все значения связаны с 1 переменной, $checkboxfiles (поэтому это массив файлов).Для копирования отмеченных файлов в другую папку я проверяю, существует ли файл с таким именем в этой папке.Если да, я показываю всплывающее окно с формой для подтверждения перезаписи или нет.

Код php:

// Multiple copy and move (checkboxes)
if( isset($_POST["checkboxes_value"]) && isset($_POST["cbdestination"]) ) {

$checkboxfiles = explode("," , $_POST["checkboxes_value"]); // contains multiple values of files

foreach($checkboxfiles as $checkboxfile) {      
    $src_file = $checkboxfile;
    $fileName = basename($src_file);
    $new_dest = $_POST['cbdestination'];

    /* New path for this file */
    $dest_file = $MainFolderName.'/'. $new_dest . '/' . $fileName;

    /* check for overwriting */
    $allow = $_POST['overwrite'];
    if($allow == '') { // if not empty, the request comes from the popup and is confirmed
        if(file_exists($dest_file)) {                   
            include('alerts/file_copy_exists.php'); // includes a form to confirm overwriting                       
            exit; // i must use this and wait for confirmation
        }       
    }

    $copy = copy( $src_file, $dest_file );
    // and so on...

} // end foreach

Проблема: допустим, я проверяю 3 файла и хочу скопироватьих в другую папку.2 из них с таким именем уже существуют в этой папке.В этом случае я должен использовать exit; в цикле перезаписи и ждать подтверждения.Но когда я использую выход, foreach больше не работает.Появляется всплывающее окно только для последнего файла.

Когда не используется exit;, появляются 2 всплывающих окна для подтверждения.Но в этом случае файлы уже перезаписаны.Так что эти всплывающие окна бесполезны!

Как я могу справиться с этой ситуацией?

...