如果没有元素,则不会分析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。谢谢,工作正常)顺便问一下,你能解释一下这样的行为吗?对不起,我编辑了答案并做了简要解释。谢谢,工作正常)顺便问一下,你能解释一下这样的行为吗?对不起,我用简短的解释编辑了答案。