-1
$jan5 = 0;
$feb5 = 0;
$mar5 = 0;
$apr5 = 0;
$may5 = 0;
$jun5 = 0;
$jul5 = 0;
$aug5 = 0;
$sep5 = 0;
$oct5 = 0;
$nov5 = 0;
$dec5 = 0;
$jan4 = 0;
$feb4 = 0;
$mar4 = 0;
$apr4 = 0;
$may4 = 0;
$jun4 = 0;
$jul4 = 0;
$aug4 = 0;
$sep4 = 0;
$oct4 = 0;
$nov4 = 0;
$dec4 = 0;
$jan3 = 0;
$feb3 = 0;
$mar3 = 0;
$apr3 = 0;
$may3 = 0;
$jun3 = 0;
$jul3 = 0;
$aug3 = 0;
$sep3 = 0;
$oct3 = 0;
$nov3 = 0;
$dec3 = 0;  

これは、たとえばデフォルト値をゼロにしたいと思ったときに最も時間のかかるコード$jan5です。誰かがこれを短くする方法を教えてもらえますか?読んでくれてありがとう

$date = 'smi_initialdate';
$level = 'smi_level';
$year = '2012';

$result1 = mysql_query("SELECT *, DATE_FORMAT( $date, '%m' ) As monthz FROM eis_mngt_sales_iti WHERE year($date) = '$year' ORDER BY $date");
while($row=mysql_fetch_array($result1))
{
$count++;


    if($row['smi_level']=='5star')
    {
        if($row['monthz']==1)
        {
        $jan++;
        }elseif($row['monthz']==2)
        {
        $feb++;
        }elseif($row['monthz']==3)
        {
        $mar++;
        }elseif($row['monthz']==4)
        {
        $apr++;
        }elseif($row['monthz']==5)
        {
        $may++;
        }elseif($row['monthz']==6)
        {
        $jun++;
        }elseif($row['monthz']==7)
        {
        $jul++;
        }elseif($row['monthz']==8)
        {
        $aug++;
        }elseif($row['monthz']==9)
        {
        $sep++;
        }elseif($row['monthz']==10)
        {
        $oct++;
        }elseif($row['monthz']==11)
        {
        $nov++;
        }elseif($row['monthz']==12)
        {
        $dec++;
        }
    }   
}

$jan5 = 0;$feb5 = 0;$mar5 = 0;$apr5 = 0;$may5 = 0;$jun5 = 0;$jul5 = 0;データがこの条件に合格しなかった場合if($row['smi_level']=='5star')に戻り値がzero(0)になるように、これを配置することにしまし た。

私の出力がこのコードに適応できるように

[<?php  echo$jan5.",".$feb5.",".$mar5.",".$apr5.",".$may5.",".$jun5.",".$jul5.",".$aug5.",".$sep5.",".$oct5.",".$nov5.",".$dec5;
?]

上記のコードを使用しない場合、$jan5 = 0;$feb5 = 0;$mar5 = 0;$apr5 = 0;$may5 = 0;$jun5 = 0;$jul5 = 0;................エコーまたは印刷すると、この1,2,5,11,12のようになりますが、それ(上記の最初のサンプルコード)を使用すると、出力は1,0,0になります。 0,0,0,0,1,2,5,11,12。

ありがとう、これが混乱した場合は申し訳ありません、私の文法について申し訳ありません

4

2 に答える 2

1

これはあなたの質問から少し外れていますが、提案されたコードの改善/改訂:

    switch($row['monthz']){
      case 1:
        $jan++;
        break;

      case 2:
        $feb++;
        break;

      case 3:
        $mar++;
        break;

      case 4:
        $apr++;
        break;

      case 5:
        $may++;
        break;

      case 6:
[ ... ]

見た目は少しすっきりしていて、コードは少し少なくなっています。詳細については、 PHPマニュアルを参照してください。

于 2012-10-22T05:17:36.157 に答える
0

これでうまくいくかもしれません...

$month = array('jan','feb','mar','apr','may','jun','jul','aug','sep','oct','nov','dec');
$day = array(3,4,5);

foreach($day as $d)
{
    foreach($month as $m)
    {
        ${$m.$d} = 0;
    }
}

ただし、 Arrayを使用することをお勧めします。

于 2012-10-22T04:56:34.280 に答える