function summaryRanges($arr) {
$result = [];
$first = $arr[0] ?? 0;
$last = $arr[0] ?? 0;
for ($i = 1; $i < count($arr); $i++) {
if ($last != $arr[$i]-1) {
if ($first != $last) {
$result[] = [$first, $last];
}
$first = $arr[$i];
}
$last = $arr[$i];
}
if ($first != $last) {
$result[] = [$first, $last];
}
return $result;
}
CREATE TABLE `like` (
`post_id` INT NOT NULL,
`user_id` INT NOT NULL,
FOREIGN KEY (`post_id`) REFERENCES `posts`(`id`) ON DELETE CASCADE,
FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE,
PRIMARY KEY (`post_id`, `user_id`),
INDEX ('user_id'),
)
SELECT `t`.`id`, `t`.`master_theme`, `t`.`theme`, IFNULL(`p`.`count`, 0) AS `posts`,
IFNULL(`v`.`count`, 0) AS `videos`, IFNULL(`s`.`count`, 0) AS `subscribers`
FROM `theme` AS `t`
LEFT JOIN (
SELECT `theme_id`, COUNT(*) AS `count`
FROM `post`
WHERE `theme_id` in (88,14,91,23,79,13,21,24,89,17,65,35,97,82,37,38,85,64,56,90,60,99,16,76)
GROUP BY `theme_id`
) AS `p` ON `p`.`theme_id` = `t`.`id`
... Аналогично для других таблиц ...
WHERE `t`.`id` in (88,14,91,23,79,13,21,24,89,17,65,35,97,82,37,38,85,64,56,90,60,99,16,76)
FAT - свободные кластеры маркируются нулями в таблице кластеров. Поиск всегда с начала таблицы.
FAT32 - свободные кластеры маркируются нулями в таблице кластеров. Поиск с места, на котором остановился последний поиск.
exFAT - свободные кластеры маркируются нулями в битовой таблице кластеров. Сначала идёт попытка найти непрерывное место, достаточное для целого файла, если не получилось, то просто выделение кластеров.
ext3 - поиск начинается с кластеров, ближайших к кластерам, занятым каталогом. Если таких нет, то поиск идёт по другим кластерам.
ext4 - аналогично ext3, но пытается выделить непрерывную группу кластеров.