3

私は次のコードを持っています。私は月の配列を持っています。

         $m="";
         $months = array(1=>'January',2=>'February',3=>'March',4=>'April',5=>'May',6=>'June',7=>'July',8=>'August',9=>'September',10=>'October',11=>'November',12=>'December');

         foreach($objhst_fees->fetch_hst_fees("`month`,`fees`","where `grno`='".$stu_name['grno']."'")as $count_month)
          { 
                           //value like:$count_month['month']=1,2,3
            $m  .= $count_month['month'].",";
          }

$m=1,2,3,4,5 と仮定して、
それを分解して配列を作成します。

          $paid_month = explode(",",$m);
          $arr=array();
          foreach($paid_month as $key=>$p)
          {
            array_push($arr,$p);
          } 

次に、にない月名を出力し$arrます。

          foreach($months as $key=>$a)
          {
             if(!in_array($key,$arr))
             {
                echo $a.",";
                //echo $months[$key];
             }
           }

しかし、私は、この方法はそれを切望していると思います.だから、これを行うための代替手段は何ですか?

4

3 に答える 3

0

コード内:

foreach($objhst_fees->fetch_hst_fees("`month`,`fees`","where `grno`='".$stu_name['grno']."'")as $count_month) { 
   //value like:$count_month['month']=1,2,3
   $m  .= $count_month['month'].",";
}

変更できます:

$m  .= $count_month['month'].",";

$m[] = $count_month['month'];

これにより、explode() を再度行う必要がなくなります

于 2013-10-22T10:27:06.967 に答える
0

これを試して:

$m = array();
$months = array('', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');

foreach( $objhst_fees->fetch_hst_fees("`month`,`fees`","where `grno`='".$stu_name['grno']."'")as $count_month)
{
    $m[] = $count_month['month'];
}

foreach ($months as $key => $month) {
    if (in_array($key, $m)) {
        continue;
    }

    echo $month . ',';
}

$m を文字列として連結してから分解する必要はありません。また、配列
に小さな変化があることにも注目してください。$monthsキーを取り外しました。しかし、値で始まるそれらを保存するに1は、最初の (ゼロ) 位置に空の値を追加するだけです。

于 2013-10-22T10:27:33.717 に答える