【发布时间】:2011-09-16 14:30:40
【问题描述】:
我正在尝试简化一些代码,其中我有一个非常长的 switch 语句(20 多个案例)。我唯一需要的就是增加一个计数器。
当前工作的开关是这样设置的:
//multidimensional-array is above
while ($responses = mysql_fetch_assoc($surveydata)){
switch($responses['cou_mun']){
case "New York":
$targetCities[0][1]++;
break;
case …
}
}
我有以下多维数组和for循环:
// [index] 'city name',count,minimum
$targetCities[0]=array('New York City',0,250);
$targetCities[1]=array('Los Angeles',0,250);
// 20 more
$responses = mysql_fetch_assoc($surveydata); //this is taken from the while-loop when I comment out the while() and switch().
for ($i=0; $i < count($targetCities); $i++){
if ($responses['cou_mun'] == $targetCities[$i][0]){$targetCities[$i][1]++;}
else{$nontargetcity++;}
echo "<li><span>" . $targetCities[$i][0] . "</span><span>" . $targetCities[$i][1] . "</span>" . amountUnderMin($targetCities[$i][1],$targetCities[$i][2]) . "<span>" . $targetCities[$i][2] . "</span><span>" . cityMinMet($targetCities[$i][1],$targetCities[$i][2]) . "</span></li>";
}
$responses['cou_mun'] 返回一个城市名称(例如“洛杉矶”)。
唯一不起作用的是if(增加计数器)。
我希望当前 $targetCities 的第二个维度会增加,但是当该行被打印/回显时,它仍然显示为0(但我可以在 Db 中看到不止一个“洛杉矶”)。
附:我确保数组中的名称与 Db 中的名称选项完全匹配(拼写+空格+大小写)。
谢谢!
编辑:$nontargetcity 计数器返回 21(案例数)。
【问题讨论】:
-
您是否尝试在增量后立即执行回显以查看值的样子 - 并验证该行是否已执行?
-
您是否尝试过从
if块中回显以查看是否实际到达?
标签: php mysql if-statement multidimensional-array