如果没有元素,则不会分析PHP数组

如果没有元素,则不会分析PHP数组,php,arrays,dql,Php,Arrays,Dql,我得到了以下数组: array(4) { [0] => array(2) { [1] => string(1) "2" ["month"] => string(2) "01" }[1] => array(2) { [1] => string(2) "74" ["month"] => string(2) "02" }[2] => array(2) { [1] => string(3) "

我得到了以下数组:

array(4) {
[0] => array(2) {
    [1] => string(1)
    "2" ["month"] => string(2)
    "01"
}[1] => array(2) {
    [1] => string(2)
    "74" ["month"] => string(2)
    "02"
}[2] => array(2) {
    [1] => string(3)
    "233" ["month"] => string(2)
    "03"
}[3] => array(2) {
    [1] => string(2)
    "21" ["month"] => string(2)
    "05"
}
}
如您所见,缺少April的值。我将其分析如下:

$delivbymonth = $query->getResult();//A DQL Query which returns the above array
$MyArray = array();

    for($i=0;$i<=11;++$i)
    {
        if(isset($delivbymonth[$i]['month']) && $delivbymonth[$i]['month']==$i+1)
          {
            $MyArray[$i] = $delivbymonth[$i][1];
          }else{$MyArray[$i]=0;}
    }
$deliverbymonth=$query->getResult()//返回上述数组的DQL查询
$MyArray=array();
对于($i=0;$ivalue对)。如果没有数字(比如这里的四月),我希望数组中的数字设置为零。在for循环到达省略的月份之前,一切都正常。它将数组中第四个数字的值设置为零,就像它应该设置的那样,但在此之后,数组中所有剩余的元素都设置为零,而不考虑May的值实际存在这一事实。前3个月的数据被正确解析,即我的最终数组中的元素不是零(2,74,233)。有人知道原因吗?
多谢各位

输出:

数组(12){
[0] =>
字符串(1)“2”
[1] =>
字符串(2)“74”
[2] =>
字符串(3)“233”
[3] =>
int(0)
[4] =>
字符串(2)“21”
[5] =>
int(0)
[6] =>
int(0)
[7] =>
int(0)
[8] =>
int(0)
[9] =>
int(0)
[10] =>
int(0)
[11] =>
int(0)
}

说明

原始代码中的以下条件由前3个元素满足

if(isset($delivbymonth[$i]['month']) && $delivbymonth[$i]['month']==$i+1)
  • $i=0=>isset($DeliveryMonth[0]['month'])&&($01==1)->true
  • $i=1=>isset($DeliveryMonth[1]['month'])&&($02==2)->true
  • $i=2=>isset($DeliveryMonth[2]['month'])&&($03==3)->true
  • $i=3=>isset($DeliveryMonth[3]['month'])&&($05==4)->FALSE
但是,在第四个元素上(当$i=3时),条件的一部分

$deliverymonth[$i]['month']==$i+1

计算结果为false(5==4),则从此点开始,每个循环都将在else子句上结束,从而导致所有后续元素都为0

输出:

数组(12){
[0] =>
字符串(1)“2”
[1] =>
字符串(2)“74”
[2] =>
字符串(3)“233”
[3] =>
int(0)
[4] =>
字符串(2)“21”
[5] =>
int(0)
[6] =>
int(0)
[7] =>
int(0)
[8] =>
int(0)
[9] =>
int(0)
[10] =>
int(0)
[11] =>
int(0)
}

说明

原始代码中的以下条件由前3个元素满足

if(isset($delivbymonth[$i]['month']) && $delivbymonth[$i]['month']==$i+1)
  • $i=0=>isset($DeliveryMonth[0]['month'])&&($01==1)->true
  • $i=1=>isset($DeliveryMonth[1]['month'])&&($02==2)->true
  • $i=2=>isset($DeliveryMonth[2]['month'])&&($03==3)->true
  • $i=3=>isset($DeliveryMonth[3]['month'])&&($05==4)->FALSE
但是,在第四个元素上(当$i=3时),条件的一部分

$deliverymonth[$i]['month']==$i+1


计算结果为false(5==4),然后从这一点开始,每个循环都会在else子句上结束,导致所有后续元素都为0。

谢谢,工作正常)顺便问一下,你能解释一下这样的行为吗?对不起,我编辑了答案并做了简要解释。谢谢,工作正常)顺便问一下,你能解释一下这样的行为吗?对不起,我用简短的解释编辑了答案。