PHP for foreach

时间:2016-09-14 16:32:53

标签: php loops foreach

我想在$ month变量中检查一年中的月份,如果找到的数据显示月份(数量),如果找不到则显示' 0'

<?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";
        }
    }
}

从上面的代码我得到

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

如果我在其他地方添加break 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

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:0)

您希望每个外循环只打印一次,而不是每个内循环打印一次。你想要更像的东西:

//When any link on the page is clicked
document.body.onclick = function(e){
  e = e || event;
  var from = findParent('a',e.target || e.srcElement);
  if (from){
    //check if pageLoading--finished ran then make an AJAX request
    console.log(__reactContent['url']);
  }
}
//find first parent with tagName [tagname]
function findParent(tagname,el){
  if ((el.nodeName || el.tagName).toLowerCase()===tagname.toLowerCase()){
    return el;
  }
  while (el = el.parentNode){
    if ((el.nodeName || el.tagName).toLowerCase()===tagname.toLowerCase()){
      return el;
    }
  }
  return null;
}

但是,您可以使用内置函数来更有效地执行此操作。请参阅in_array功能。