0

データベースからいくつかの値を取得するスクリプトがあり、それらを次の変数に保存します。

$Av_1o=99;
$Av_2o=100;
$Av_3o=80;
$Av_4o=70;
$Av_5o=90;
$Av_6o=110;
$Av_7o=120;
$Av_8o=110;
$Av_9o=90;
$Av_10o=88;
$Av_11o=99;
$Av_12o=100;
$Av_13o=101;

次に、年などの別の変数に応じて、カウンター (名前: $top_counter) に最大値を設定する必要があります。

//defining year:
$year=2009;
            switch($year){
        case 2008:
            $top_counter=13;
            break;
        case 2009:
            $top_counter=11;
            break;
        case 2010:
            $top_counter=9;
            break;
        case 2011:
            $top_counter=7;
            break;
        case 2012:
            $top_counter=5;
            break;
        case 2013:
            $top_counter=3;
            break;
        case 2014:
            $top_counter=1;
            break;
        default:
            $top_counter=NULL;
    }

最後に、for ループを使用します。

for($counter=1;$counter<=$top_counter;$counter++){
  $variable_name='Av_'.$counter.'o';
  if($$variable_name>=100){
    echo '<p style="color: green;">'.$variable_name.' is equal or greater than 100</p>';
  }
}

私の質問は、対応する数値 ($counter) に応じてどの変数 (上で宣言されている) を使用するかを php に伝える方法です。

この場合、年が 2009 の場合の出力は次のとおりです。

Av_2o is equal or greater than 100

Av_6o is equal or greater than 100

Av_7o is equal or greater than 100

Av_8o is equal or greater than 100

変数名を出力するにはどうすればよいですか? または、現在使用している $Av_xo を正確に知っていますか?

ありがとう!

4

2 に答える 2

1

データベースの値を配列に格納し、カウンターをそのインデックスとして使用できます。

$array = array("foo", "bar", "hello", "world");
for($counter=0; $counter<=$top_counter;$counter++){
    var_dump($array[$counter]);
}

配列のインデックスは 0 から始まるため、$counter=1 から $counter=0 への変更に注意してください (たとえば、上の配列では、$array[0] = "foo"および$array=[2] = "hello")

于 2014-02-26T00:10:24.977 に答える
1

これを行うために標準変数を使用しません。不確定な数の変数を作成しているだけでなく、基本的に配列を作成しているため、やりたいことをより簡単に管理できます。

$av = array();
while($row = mysqli_fetch_assoc($someresultset)) $av[] = $row['field'];

for($counter=1;$counter<=$top_counter;$counter++){
  if($av[$counter] >= 100){
    echo '<p style="color: green;">'.$av[$counter].' is greater than 100</p>';
  }
}
于 2014-02-26T00:15:22.870 に答える