2016-03-02 1 views
2

У меня есть петля. Как я могу оптимизировать этот код, чтобы он выполнял каждые 12 элементов, начиная со второго элемента. Я использую жесткий код для каждого из элементов +12, но, конечно, это не очень хорошее решение :) Я знаю, что это легко сделать, и я пытался это сделать с помощью модуля оператора, однако он работал как-то неправильно.Добавить php-код каждые 12 элементов, начиная с 2-го элемента

<?php if(($counter == 2) || ($counter == 14) || ($counter == 26) || ($counter == 38) || ($counter == 50) || ($counter == 62) || ($counter == 74) || ($counter == 86) || ($counter == 98 .... ?> 

Спасибо за помощь!

+0

Возможно, вам будет полезно включить модуль sta Вы пытались. Таким образом, мы можем помочь устранить любые заблуждения, которые могут возникнуть при использовании оператора modulo. – shrmn

ответ

5

Ответ

Посмотрите на Modulus operator (%):

<?php 
    if (($counter - 2) % 12 == 0) { 
     //.... 
    } 
?> 

Объяснение

Оператор Modulus ($a % $b) является остаток $a раздел по $b.

  • $counter - 2 - а вы начинаете со смещением 2, удалить, что из $counter
  • % 12 - возвращает остаток $counter - 2 деленной на 12
  • == 0 - если выше возвращается 0, вы знаете, что он точно делится
+0

И почему бы не 'if ($ counter% 12 === 2) ...'? – naomik

+0

@naomik, потому что OP утверждает, что он хочет проверить «* каждые 12 элементов, начиная со второго пункта *» – Ben

+0

@naomik Я ответил так (удаленный ответ, потому что этот лучше). Вам также нужно будет проверить, $ counter == 2 также. – PVL

1

Вы можете упростить @B Ответ enPearlKahan с

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 
# ... 
+0

спасибо :) просто проверил, что он тоже работает! – MIC

Смежные вопросы