Цикл PHP заходит на второй круг, почему?

У меня есть код, когда начинается цикл, работает сначала вроде-бы правильно, но почемуто заходит на второй круг, и бывает что идет на шаги больше чем указан count()

<?php
        include "../config.php";
        include 'simplexlsx-master/src/SimpleXLSX.php';
    
        set_time_limit(500);
    
        $user_events_log = array();
        function event($a, $b, $c, $d, $dbsql) {
            $event = 'UPDATE app_temp_log SET `table_name` = "' . $a . '", `count` = "' . $b . '", `progress` = "' . $c . '", `event` = "' . $d . '" WHERE id = 100';
            $dbsql->query($event);
        }
    
        function import_log($a, $b, $c, $d, $e, $dbsql) {
            $log = 'INSERT INTO ' . 'app_file_import_log' . ' (`admin_name`, `admin_type`, `file_name`, `file_size`, `events`) VALUES (" '. $a .'", " '. $b .'", " '. $c .'", " '. $d .'", " '. $e .'")';
            $dbsql->query($log);
    
            if (!empty($dbsql->error)) {
                var_dump($dbsql->error);
            }
    
        }
    
        // Принимаем файл
        $uploaddir = '../../uploads/';
        $uploadfile = $uploaddir . basename($_FILES['file']['name']);
    
        // Достаем именя всех таблиц в базе
        $tables_array = array();
        $check_tables_in_data_base = $db->query("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_SCHEMA=" . "'" . DB_NAME . "'");
        while ($collumn = $check_tables_in_data_base->fetch_assoc()) {
            array_push($tables_array, $collumn['TABLE_NAME']);
        }
    
        // Идем в файл
        if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) {
            array_push($user_events_log, '<li>' . 'Файл загружен' . '</li>');
            event("", "", "", 'Файл загружен', $db);
    
            if ($xlsx = SimpleXLSX::parse($uploadfile)) {
                // Определяем сколько вкладок в документе
                $count_tabs = count($xlsx->sheetNames());
                // $count_tabs = 5;
                // Запускаем цикл по вкладкам
                $import_progress = 0;
    //          var_dump($count_tabs);
    //          var_dump($xlsx->sheetName( 21 ));
    //          var_dump($xlsx->rows(21)[0][16]);
    //          die();
    
                for ($tab = 0; $tab < $count_tabs; $tab++) {
                    if ($tab <= $count_tabs) {
                        $import_progress++;
                    } else {
                        $import_progress = $import_progress;
                    }
                    // echo $xlsx->sheetName( $tab );
                    $table_name = 'app_catalog_' . $xlsx->rows($tab)[0][16];
                    // echo '<pre>'; print_r( $xlsx->rows($tab));
                    // var_dump(count($xlsx->rows($tab)));
    
                    // Проверяем есть ли такая таблица в базе
                    if (array_intersect(explode(' ', $table_name), $tables_array)) {
                        $sql_table_clear = 'TRUNCATE TABLE ' . $table_name;
                        $db->query($sql_table_clear);
                        array_push($user_events_log, '<li>' . 'Чистка таблицы ' . $xlsx->sheetName( $tab ) . '</li>');
                        event($table_name, $count_tabs, $import_progress, 'Чистка таблицы ' . $xlsx->sheetName( $tab ), $db);
                    } else {
                        if ($table_name != 'app_catalog_') {
                            $sql_create_new_table = "CREATE TABLE $table_name (
                          `number` int(11) NOT NULL,
                          `name` text NOT NULL,
                          `brand` text NOT NULL,
                          `a` text NOT NULL,
                          `b` text NOT NULL,
                          `c` text NOT NULL,
                          `d` text NOT NULL,
                          `e` text NOT NULL,
                          `f` text NOT NULL,
                          `g` text NOT NULL,
                          `h` text NOT NULL,
                          `amount` text NOT NULL,
                          `application` text NOT NULL,
                          `note` text NOT NULL,
                          `jrone` text NOT NULL,
                          `ee` text NOT NULL
                        ) ENGINE=InnoDB DEFAULT CHARSET=utf8;";
                            $db->query($sql_create_new_table);
                            array_push($user_events_log, '<li>' . 'Создание таблицы ' . $xlsx->sheetName( $tab ) . '</li>');
                            event($table_name, $count_tabs, $import_progress, 'Создание таблицы ' . $xlsx->sheetName( $tab ), $db);
                        }
                    }
    
                    // Формируем запрос в Базу данных
                    $val_array = "";
                    for ($request = 0; $request < count($xlsx->rows($tab)); $request++) {
                        if ($request == 0) {
                            continue;
                        }
                        $row = $xlsx->rows($tab)[$request];
                        $val_array = $val_array . '(' . "'$row[0]','$row[1]','$row[2]','$row[3]','$row[4]','$row[5]','$row[6]','$row[7]','$row[8]','$row[9]','$row[10]','$row[11]','$row[12]','$row[13]','$row[14]','$row[15]'" . '),';
                    }
                    $sql_table_clear = 'TRUNCATE TABLE app_catalog_' . $table_name;
                    $sql_request = 'INSERT INTO ' . $table_name . ' (`number`, `name`, `brand`, `a`,`b`,`c`,`d`,`e`,`f`,`g`,`h`, `amount`,`application`, `note` ,`jrone`, `ee`) VALUES ' . $val_array;
                    $sql_request = trim($sql_request, ',');
                    $sql_request = $sql_request . ';';
                    $import_result = $db->query($sql_table_clear) . $db->query($sql_request);
                    if ($import_result != true) {
                        $error = $db->error;
                        if ($table_name != 'app_catalog_') {
                            array_push($user_events_log, '<li>' . '<b>Ошибка обновления таблицы</b>' . '<strong>' . $error . '</strong>' . $xlsx->sheetName($tab) . ', проверьте SQL запрос ' . '<code>'.$sql_request.'</code><textarea>'.$sql_request.'</textarea></li>');
                            event($table_name, $count_tabs, $import_progress, 'Ошибка обновления таблицы ' . $xlsx->sheetName($tab), $db);
                        } else {
                            array_push($user_events_log, '<li>' . '<b>Ошибка обновления таблицы</b>' . '<strong>' . $error . '</strong>' . $xlsx->sheetName($tab) . ', проверьте SQL запрос ' . '<code>'.$sql_request.'</code><textarea>'.$sql_request.'</textarea></li>');
                            event($table_name, $count_tabs, $import_progress, 'Ошибка обновления таблицы ' . $xlsx->sheetName($tab) . '. Отсутствует имя таблици в столбце Q или имя указано неверно!', $db);
                        }
                    } else {
                        array_push($user_events_log, '<li>' . 'Таблица ' . $xlsx->sheetName($tab) . ' обновлена' . '</li>');
                        event($table_name, $count_tabs, $import_progress, 'Таблица ' . $xlsx->sheetName($tab) . ' обновлена', $db);
                    }
    
                }
            } else {
                event("", "", "100", SimpleXLSX::parseError(), $db);
            }
            import_log($_POST['admin_name'], $_POST['admin_type'], $_FILES['file']['name'], $_FILES['file']['size'], str_replace('</li>,', '</li>', implode(',', $user_events_log)), $db);
            event("", "", "100", 'Импорт окончен', $db);
            echo "true";
        } else {
            echo "false";
        }

Ответы (0 шт):