2016-09-14 2 views
0

Я хочу, чтобы проверить на месяц в течение одного года, найденный в переменном $ месяца, если данные, найденные показывают месяц (в номере), если не найдено шоу «0»PHP для Еогеаспа

<?php 
$month = array(
    '2', 
    '3', 
    '4', 
    '7', 
    '12' 
); 

for ($i = 1; $i <= 12; $i++) { 
    foreach($month as $key => $value) { 
     if ($value == $i) { 
      echo "$i" . "\n"; 
     } 
     else { 
      echo "0" . "\n"; 
     } 
    } 
} 

из кода выше I получить

0 
0 
0 
0 
0 
2 
0 
0 
0 
0 
0 
3 
0 
0 
0 
0 
0 
4 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
7 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
12 

если добавить перерыв 1 после того, как еще

for ($i = 1; $i <= 12; $i++) { 
    foreach($month as $key => $value) { 
     if ($value == $i) { 
      echo "$i" . "\n"; 
     } 
     else { 
      echo "0" . "\n"; 
     } 
     break 1; 
    } 
} 

я получил 12 результат, но не то, что я ожидал.

0 
2 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 

что я хочу

0 
2 
3 
4 
0 
0 
7 
0 
0 
0 
0 
12 

Если бы я смог получить этот результат, я хочу, чтобы положить, что эти результаты на графике с помощью chartjs, я знаю, как сделать это. Я только хочу знать, как получить эти результаты, любая помощь appriciate

+0

Пожалуйста, не забудьте выбрать ответ. :) – Craig

ответ

5
for ($i = 1; $i <= 12; $i++) { 
    if(in_array($i, $month)){ 
     echo "$i" . "\n"; 
    }else { 
     echo "0" . "\n"; 
    } 
} 
0

Вы хотите распечатать только один раз за внешний контур, а не раз в внутренний цикл. Вы хотите что-то еще:

for ($i = 1; $i <= 12; $i++) { 
    $pos = 0; 
    foreach($month as $key => $value) { 
     if ($value == $i) { 
      $pos = $i; 
      break; 
     } 
    } 
    echo "$pos" . "\n"; 
} 

Однако вы можете использовать встроенные функции, чтобы сделать это более эффективно. См. Функцию in_array.

+0

Спасибо :) много. – phpLoop