PHP: Как ввести в условие "конец цикла" (нечего уже перебирать)?

коллеги! Как написать условие if так, чтобы если массив закончится не на ста, то его остаток все равно отправлялся бы запросом INSERT внутри if. Я попробовал if( $stop%100 == 0 || $temp_array === end($value)), но $value - массив, а в $temp_array кладется несколько массивов из $value (Потому запрос отправляет порцию этих массивов). Помогите, пожалуйста, преодолеть тупик.. Буду благодарен за любой совет..

foreach($assoc_array as $value) {
    
        $temp_array[] = "($value[year], '$value[is_sender]', '$value[is_receiver]', '$value[is_holder]', '$value[is_declarant]','$value[sender]', '$value[receiver]', '$value[holder]', '$value[declarant]', '$value[_sys_number]', '$value[_key]', '$value[_status]', '$value[inn]')";
    
        if( $stop%100 == 0) {
            $query =
                "INSERT INTO basename
                    (year,is_sender,is_receiver,is_holder,is_declarant,sender,receiver,holder,declarant,_sys_number,_key,_status,inn)
                VALUES " . implode(",", $temp_array);
            
            if ( !$b->Query( $query ) )
            {
                print("ERROR CONNECT SQL");
                exit;
            }
    
            $temp_array = array();
    
        }
    $stop++;
    
    }

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

Автор решения: Mcile
<?php

//схематично

$assoc_array = [[],[]];
define('PIECE',100);
$need_write_once = sizeof($assoc_array)%PIECE > 0;
$end_position = sizeof($assoc_array);
$temp_array = [];
$counter = 0;

foreach($assoc_array as $value) {
    ++$counter;
    $temp_array[] = '';
    $do_write = PIECE == sizeof($temp_array) || $need_write_once && $counter == $end_position;
    
    if( $do_write ){
        echo 'делаем запись';
        $temp_array = [];
    }
}
→ Ссылка