На вопрдпресе также не нашел подходящего решения. Посмотрел Wix и Ucoz. Тоже не то.
$arr = [
    11 => true, 
    12 => true, 
    15 => false, 
    16 => true, 
    17 => false,
    18 => false
];
reset($arr);
$key_from = key($arr);
$key_to = key($arr);
$last_value = array_values($arr)[0]; 
$result = [];
foreach ($arr as $key => $value) {
    if ($last_value == $value) {
        $key_to = $key;
    } else {
        $result[] = $key_from . ' - ' . $key_to . ' ' . (($last_value) ? 'true' : 'false');
        $key_from = $key;
        $key_to = $key;
        $last_value = $value;
    }
}
$result[] = $key_from . ' - ' . $key_to . ' ' . (($last_value) ? 'true' : 'false');
print_r($result);<?php
$arr = [
//...
    11 => true, 
    12 => true, 
    15 => false, 
    16 => true, 
    17 => false,
    18 => false
//...
];
function group($arr) {
	$out = [];
	$v_in = reset($arr);
	$k_in = $k_out = key($arr);
	while( $k_out !== null) {
		$v = next($arr);
		$k = key($arr);
		if( null !== $k  &&  $v === $v_in) {
			$k_out = $k;
			continue;
		}
		
		$out[] = sprintf('%d - %d %s', $k_in, $k_out, $v_in ? 'true' : 'false');
		$k_in = $k_out = $k;
		$v_in = $v;
	}
	
	return $out;
}
print_r( group($arr)); 
/* Array
(
    [0] => 11 - 12 true
    [1] => 15 - 15 false
    [2] => 16 - 16 true
    [3] => 17 - 18 false
) */Сервер сверяет токен у пользователя и бд.
 
  
   
  
  echo substr(md5(microtime()), mt_rand(0, 50), 6);
// 296ca4