У меня есть петля. Как я могу оптимизировать этот код, чтобы он выполнялся каждые 12 пунктов, начиная со 2-го пункта. Я использую жестко закодированный код для каждого элемента +12, но, конечно, это не очень хорошее решение 🙂 Я знаю, что это легко сделать, и я пытался сделать это с помощью оператора модуля, однако он работал как-то неправильно.
<?php if( ($counter == 2) || ($counter == 14) || ($counter == 26) || ($counter == 38) || ($counter == 50) || ($counter == 62) || ($counter == 74) || ($counter == 86) || ($counter == 98 .... ?>
Спасибо за помощь!
Ответ
Посмотрите на Оператор модуля (%
):
<?php
if ( ( $counter - 2 ) % 12 == 0 ) {
//....
}
?>
объяснение
Оператор модуля (
$a % $b
) является остатком$a
деленное на$b
,
$counter - 2
— как вы начинаете со смещением 2
удалите это из $counter
% 12
— вернет остаток $counter - 2
деленное на 12
== 0
— если выше вернется 0
вы знаете, что это точно делитсяВы можете упростить ответ @ BenPearlKahan с помощью
if ($counter % 12 === 2) { ...
Думайте об этом так:
$offset = 0;
if ($counter % 12 === $offset) { ...
Чтобы начать с позиции счетчика 2, а не 0, просто измените смещение
$offset = 2;
if ($counter % 12 === $offset) { ...
доказательство
0 % 12 === 2 #=> false
1 % 12 === 2 #=> false
2 % 12 === 2 #=> true
3 % 12 === 2 #=> false
4 % 12 === 2 #=> false
5 % 12 === 2 #=> false
6 % 12 === 2 #=> false
7 % 12 === 2 #=> false
8 % 12 === 2 #=> false
9 % 12 === 2 #=> false
10 % 12 === 2 #=> false
11 % 12 === 2 #=> false
12 % 12 === 2 #=> false
13 % 12 === 2 #=> false
14 % 12 === 2 #=> true
15 % 12 === 2 #=> false
16 % 12 === 2 #=> false
17 % 12 === 2 #=> false
18 % 12 === 2 #=> false
19 % 12 === 2 #=> false
20 % 12 === 2 #=> false
21 % 12 === 2 #=> false
22 % 12 === 2 #=> false
23 % 12 === 2 #=> false
24 % 12 === 2 #=> false
25 % 12 === 2 #=> false
26 % 12 === 2 #=> true
27 % 12 === 2 #=> false
28 % 12 === 2 #=> false
29 % 12 === 2 #=> false
30 % 12 === 2 #=> false
31 % 12 === 2 #=> false
32 % 12 === 2 #=> false
33 % 12 === 2 #=> false
34 % 12 === 2 #=> false
35 % 12 === 2 #=> false
36 % 12 === 2 #=> false
37 % 12 === 2 #=> false
38 % 12 === 2 #=> true
39 % 12 === 2 #=> false
40 % 12 === 2 #=> false
41 % 12 === 2 #=> false
42 % 12 === 2 #=> false
43 % 12 === 2 #=> false
44 % 12 === 2 #=> false
45 % 12 === 2 #=> false
46 % 12 === 2 #=> false
47 % 12 === 2 #=> false
48 % 12 === 2 #=> false
49 % 12 === 2 #=> false
50 % 12 === 2 #=> true
# ...