【发布时间】:2017-03-26 21:23:38
【问题描述】:
我在 PHP 上有这段代码:
for($number=0; $number<=9;$number++)
{
switch($twigparams["entries"][$number]["continent"])
{
case "Europe" : $europeanusers+=1;
break;
case "Asia" : $asiaticusers+=1;
break;
case "Africa" : $africanusers+=1;
break;
case "America" : $americanusers+=1;
break;
case "Oceania" : $oceanicusers+=1;
break;
default;
}
}
如果我这样做:
echo $twigparams["entries"][$number]["continent"];
在 for 循环中,显示当前大陆,但开关不起作用,总是转到默认情况,并且没有增加任何选项。
这里是$twigparams的前两个元素的var_dump:
array(3) {
["option"]=> int(0)
["entries"]=> array(10) {
[0]=> array(5) {
["name"]=> string(10) "Federico "
["typeofcontract"]=> string(18) "Voice + Internet "
["gender"]=> string(6) "Male "
["age"]=> string(4) "54 "
["continent"]=> string(6) "Asia "
}
[1]=> array(5) {
["name"]=> string(7) "Maria "
["typeofcontract"]=> string(18) "Voice + Internet "
["gender"]=> string(8) "Female "
["age"]=> string(4) "32 "
["continent"]=> string(9) "America "
}
【问题讨论】:
-
我不知道问题出在哪里,也无法重现,但不要写
$europeanusers+=1;,因为要递增,请使用递增语法:$europeanusers++;。顺便说一句,使用if...elseif比switch/case快 -
你能做一个 var_dump($twigparams) 来看看它的结构吗
-
您的变量
$xxxxusers是否引用了您的数组$twigparams?否则$twigparams数组不应该改变。 -
var_dump($twigparams) 太疯狂了,因为我把所有的东西都存储在那里了。我认为这是读取以下值的转换问题: $twigparams["entries"][$number]["continent"] 开关的东西,谁不能读取所有字符或...因为我试图把进入开关,在以下情况下:“America”、“America”和所有带有空格“”的可能情况都不起作用......是的,变量被正确引用。谢谢你们!
-
你有没有把所有的变量都初始化为0:
$europeanusers、$asiaticusers等?
标签: php arrays symfony switch-statement