0.25
как ни округляй, будет 0
для $amount < 2
$rand = mt_rand(1, 1000);
$bad = '...';
if ($rand < 150) {
$k = 1;
$message = '$ (x0) ❌';
} elseif ($rand < 300) {
$k = 0.75;
$message = "$ (x0.25) $bad";
} elseif ($rand < 450) {
$k = 0.5;
$message = "$ (x0.5) $bad";
} elseif ($rand < 600) {
$k = 0.25;
$message = "$ (x0.75) $bad";
}
$delta = round($amount * k);
$res = $user->balance - $delta;
$restxt = 'Вы проиграли ' . number_format($delta, 0, '', '.') . $message;
$delta = $amount === 1 ? max(1, floor($amount * k)) : floor($amount * $k);
но следующий вопрос будет «а вот 2 при $k === 0.25
тоже округляется до 0» $start = new DateTimeImmutable('1878-10-11');
$finish = new DateTimeImmutable('2009-10-13');
$interval = $start->diff($finish);
$daysDiff = $interval->format('%a');
$randomDays = rand(0, $daysDiff);
$randomDate = $start->add(new DateInterval("P${randomDays}D"));
echo $randomDate->format('Y-m-d'); // 1896-06-24
.htaccess
в конфиг NGINX. С помощью Google, SO и Habr.QnA )/index.php
, а там уже логика внутри PHP узнавала запрошенный URL /section1/page2
и отдавала соответствующий ответ. Такие решения универсальны относительно веб-сервера..htaccess
иногда кладут в проект, потому, что это легкий невидимый файл, который не помешает. Но поможет понять ожидаемое поведение веб-сервера. Конфиги NGINX лежат отдельно от проекта, поэтому их не прилагают. Хотя иногда приводят пример в документации. .
начало
---|---|---
к | 1
о -
н | 2 1
е -
ц | 3 2 1
if - else if - else
function ranges(int $a, int $b): array
{
$start = 20;
$finish = 30;
$result = [
'before' => null,
'match' => null,
'after' => null,
];
if ($a < $start) {
if ($b < $start) {
$result['before'] = [$a, $b];
} else {
$result['before'] = [$a, $start];
if ($b < $finish) {
$result['match'] = [$start, $b];
} else {
$result['match'] = [$start, $finish];
$result['after'] = [$finish, $b];
}
}
} else if ($a < $finish) {
if ($b < $finish) {
$result['match'] = [$a, $b];
} else {
$result['match'] = [$a, $finish];
$result['after'] = [$finish, $b];
}
} else {
$result['after'] = [$a, $b];
}
return $result;
}
print(json_encode(ranges(5, 25))); // {"before":[5,20],"match":[20,25],"after":null}
$arr = [$start, $finish, $a, $b];
sort($arr, SORT_NUMERIC);
1, 2, 3, 2, 3, 2, 1
0 + + - + - -
^ ^ ^ в этих точках знак поменялся
Складывать найденные точки в два массива: максимумы и минимумы.$str = "attachment=12345";
list($number) = sscanf($str, "attachment=%d");
echo $number; // 12345
rgb(0, 0, 0)
соответствует множество hsl(*, *, 0)
.$array = [
["TITLE" => "Тест 1", "LEVEL" => 1,],
["TITLE" => "Тест 2", "LEVEL" => 2,],
["TITLE" => "Тест 3", "LEVEL" => 2,],
["TITLE" => "Тест 4", "LEVEL" => 3,],
["TITLE" => "Тест 5", "LEVEL" => 2,],
["TITLE" => "Тест 6", "LEVEL" => 3,],
];
const TITLE = 'TITLE';
const LEVEL = 'LEVEL';
const CHILDREN = 'CHILDREN';
$result = [];
$refs = [];
foreach ($array as $item) {
$level = $item[LEVEL];
if ($level === 1) {
$result[] = $item;
$refs = [&$result[count($result) - 1]];
} else {
for ($i = count($refs) - 1; $i >= 0; $i--) {
$parent = &$refs[$i];
if ($parent[LEVEL] === $level - 1) {
if (!isset($parent[CHILDREN])) {
$parent[CHILDREN] = [];
}
$parent[CHILDREN][] = $item;
array_splice($refs, $i + 1);
$refs[] = &$parent[CHILDREN][count($parent[CHILDREN]) - 1];
unset($parent);
break;
} else {
unset($parent);
continue;
}
}
}
}
echo json_encode($result, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
[
{
"TITLE": "Тест 1",
"LEVEL": 1,
"CHILDREN": [
{
"TITLE": "Тест 2",
"LEVEL": 2
},
{
"TITLE": "Тест 3",
"LEVEL": 2,
"CHILDREN": [
{
"TITLE": "Тест 4",
"LEVEL": 3
}
]
},
{
"TITLE": "Тест 5",
"LEVEL": 2,
"CHILDREN": [
{
"TITLE": "Тест 6",
"LEVEL": 3
}
]
}
]
}
]