0

何らかの理由で、この配列は 1 行目を 2 行目に、1 行目と 2 行目を 3 行目に、というように繰り返し続けます。

unset ($grade); $grade = array();
foreach ($row as $grade => $value) {
  if (substr($grade, 0,1)== "y") {
  if ($grade == "y1") {if ($value == "x") {$grades[] = "1";}}
  if ($grade == "y2") {if ($value == "x") {$grades[] = "2";}}
  if ($grade == "y3") {if ($value == "x") {$grades[] = "3";}}
  if ($grade == "y4") {if ($value == "x") {$grades[] = "4";}}
  if ($grade == "y5") {if ($value == "x") {$grades[] = "5";}}
  if ($grade == "y6") {if ($value == "x") {$grades[] = "6";}}
  if ($grade == "y7") {if ($value == "x") {$grades[] = "7";}}
}}
$grades_string = implode(", ", $grades);

dB の行には y1、y2 などのタイトルが付けられています。必要に応じて、エラーの意味を示すリンクを誰かに示すことができます。

4

2 に答える 2

4

それはあなたが作成したからですが、作成$grade = array();したいです$grades = array();

この構文ミスを修正すると、正常に動作するはずです。

また、これに移行if ($value == "x")if (substr($grade, 0,1)== "y")て、コードをよりクリーンで高速にすることもできます。あなたの場合:

if (substr($grade, 0,1)== "y" && $value == "x") {
    if ($grade == "y1") {$grades[] = "1";}
    ...
于 2013-01-28T00:53:44.097 に答える
0

ループを読みやすく/より意味のあるものに書き直すだけです。何が問題なのかを明確にする必要があります。その後、回答を更新します。

foreach ($row as $grade => $value) {
    if (substr($grade, 0,1)== "y" AND $value == "x") {
        if ($grade == "y1") {$grades[] = "1";}
        elseif ($grade == "y2") {$grades[] = "2";}
        elseif ($grade == "y3") {$grades[] = "3";}
        elseif ($grade == "y4") {$grades[] = "4";}
        elseif ($grade == "y5") {$grades[] = "5";}
        elseif ($grade == "y6") {$grades[] = "6";}
        elseif ($grade == "y7") {$grades[] = "7";}
    }
}
于 2013-01-28T00:53:09.100 に答える