2017-03-26 4 views
1

を見て私は、PHP上でこのコードを持っている現在、大陸を示したforループ内の/配列PHPのコンテンツ内のSymfony

echo $twigparams["entries"][$number]["continent"]; 

を、しかし、スイッチは機能しません。常にデフォルトのケースに入り、オプションのどれも増加しません。ここで

$twigparamsの最初の2つの要素のの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 " 
     } 
+0

私は問題が何であるかを知らないと私はそれを再現することはできませんが、代わりに+ = 1 '$ europeanusersを書く;'あなたがインクリメントしたいため、使用をインクリメント構文: '$ europeanusers ++;' 'if ... elseif'は' switch/case'より高速です –

+0

構造体を見るためにvar_dump($ twigparams)を実行できますか? –

+0

変数 '$ xxxxusers'が配列' $ twigparams'?さもなければ、 '$ twigparams'配列は変更されません。 –

答えて

0

あなたの配列値の末尾のスペースを持っています。単にswitch文にtrim()を適用します。私は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 
+0

今は完璧です!あなたの助けをありがとう、私はあなたの緑に投票しました! :) –