【问题标题】:Looking inside the content of an array PHP/Symfony查看数组 PHP/Symfony 的内容
【发布时间】: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...elseifswitch/case
  • 你能做一个 var_dump($twigparams) 来看看它的结构吗
  • 您的变量$xxxxusers 是否引用了您的数组$twigparams?否则 $twigparams 数组不应该改变。
  • var_dump($twigparams) 太疯狂了,因为我把所有的东西都存储在那里了。我认为这是读取以下值的转换问题: $twigparams["entries"][$number]["continent"] 开关的东西,谁不能读取所有字符或...因为我试图把进入开关,在以下情况下:“America”、“America”和所有带有空格“”的可能情况都不起作用......是的,变量被正确引用。谢谢你们!
  • 你有没有把所有的变量都初始化为0:$europeanusers$asiaticusers等?

标签: php arrays symfony switch-statement


【解决方案1】:

您的数组值有一个尾随空格。只需将trim() 应用于 switch 语句。我还换了foreach(),因为它应该随着未来数组的变化而更加灵活,并且我已经展示了++ 的递增。

$twigparams=array(
    "option"=>array(0),
    "entries"=>array(
        0=>array(
            "name"=>"Federico ",
            "typeofcontract"=>"Voice + Internet ",
            "gender"=>"Male ",
            "age"=>"54 ",
            "continent"=>"Asia "
        ),
        1=>array(
            "name"=>"Maria ",
            "typeofcontract"=>"Voice + Internet ",
            "gender"=>"Female ",
            "age"=>"32 ",
            "continent"=>"America "
        )
    )
);

$europeanusers=0;
$asiaticusers=0;
$africanusers=0;
$americanusers=0;
$oceanicusers=0;

foreach($twigparams["entries"] as $a){
    switch(trim($a["continent"])){
        case "Europe" : ++$europeanusers;
        break;
        case "Asia" : ++$asiaticusers;
        break;
        case "Africa" : ++$africanusers;
        break;
        case "America" : ++$americanusers;
        break;
        case "Oceania" : ++$oceanicusers;
        break;
        default;
    }
}

echo "EUROPE: $europeanusers<br>";
echo "ASIA: $asiaticusers<br>";
echo "AFRICA: $africanusers<br>";
echo "AMERICA: $americanusers<br>";
echo "OCEANIA: $oceanicusers<br>";

输出:

EUROPE: 0
ASIA: 1
AFRICA: 0
AMERICA: 1
OCEANIA: 0

【讨论】:

  • 现在完美了!非常感谢你的帮助,我给你投了绿色票! :)
猜你喜欢
  • 2011-01-13
  • 1970-01-01
  • 2022-01-03
  • 2018-06-25
  • 2011-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-17
相关资源
最近更新 更多