WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:PHP メソッド内での配列の取扱い。

0:[投稿] chirumiru。 [MAIL] [2004/12/16 19:44 ][環境:IE6、WIN98 Apache、PHP]

いつもお世話になります、
chirumiru。です。

現在PHPを学びはじめて、BBSシステムを作成しています。
メソッドのなかで、配列データの取扱いに右往左往しています。

出力としては、"Array[num]"、とされます、(テスト段階ですので、ログファイル中の実質的なデータは、名前とコメントだけです)

クラスのなかで、データを配列として宣言できればいいのですが、Web上の各講座を巡ってみて、明示的にする必要はなく、型キャストされるという結論に至りました。
配列として扱っている変数の宣言を、考えうる限りは試してみたつもりです。

下記がコードです、
ご教示の程をよろしくお願いします。

        class readDat extends fManeger {
            var $rData;
            var $joinData;
            var $name;
            var message;
            function readDat()    {
                $this->rData    ='';
                $this->joinData    ='';
                $this->loop    =0;
            }
            function rDat_()    {
                while(!feof($this->fPointer)) {
                    $this->rData=fgets($this->fPointer);
                    list ($no[$this->loop], $this->name[$this->loop], $this->message[$this->loop], $color[$this->loop], $icon[$this->loop], $home[$this->loop], $pass[$this->loop], $parent[$this->loop], $date[$this->loop])=split('<>', $this->rData); $this->loop++;
                    $this->joinData=$this->joinData.$this->rData;
                }
                return($this->joinData);
            }
            function pDat_() {
                for ($reTry=0; $reTry<$this->loop; $reTry++) {
                    print "<p><font size='2' color='#00518b'>NAME:</font><font size='2' color='#ffa500'>$this->name[$reTry]</font><br><font size='2' color='#00518b'>COMMENT:</font>\t\t<font size='2' color='#000000'>$this->message[$reTry]</font><br><hr>";
                }
            }
        }

        function iniDis_() {
            print    "<div align='right'>\n";
            print        "<a href='./firstBBS.php?ACTION=prnForm&TYPE=NEW'><font color='rgb(0%, 80%, 0%)' size='2' face='Comic Sans MS'>WRITE</font></a>\n";

            print    "</div>\n";
            $fMan    =new readDat();
            $fMan->fOpen_(DATFILE, 'r+');
            $fMan->rDat_();
            $fMan->pDat_();
            $fMan->fClose_();
        }

        define("DATFILE",    "./log/log.dat");
        define("CNTFILE",    "./log/cnt.dat");

        function wri_() {
            global $action; global $name; global $message; global $parent;
            $cMan    =new readCnt();
            $cMan->fOpen_(CNTFILE, 'r+');
            $cMan->rCnt_();
            $cMan->rCnt++;
            $cMan->fWrite_("$cMan->rCnt\n");
            $cMan->fClose_();
            $values    =$cMan->rCnt.'<>'.$name.'<>'.$message.'<>'.$color.'<>'.$icon.'<>'.$home.'<>'.$pass.'<>'.$parent.'<>'.$date."\n";
            $fMan    =new readDat();
            $fMan->fOpen_(DATFILE,'r+');
            if ($action=="NEW")    { $values=$values.$fMan->rDat_(); }
            $fMan->fSeek_();
            $fMan->fWrite_($values);
            $fMan->fClose_();
        }


1:[質問] chirumiru。 [MAIL] [2004/12/17 14:49 ]

こんにちわ、
chirumiru。です。

あれこれ思案して、書き換えているのですが、どうしても上手くいきません。

とりあえず"Split()"を"explode()"に変更して、以下のように2次元配列を実現、そしてそれにより表示しようと思ったのですが、どこに問題があるのでしょうか。

ご教示の程、よろしく願います。

P.S. クラスを利用しているのは、なるべく抽象化を図って、再利用を考えているためです。

        class readDat extends fManeger {
            var $rData;
            var $joinData;
            var $pushData;
            var $num;
            function readDat()    {
                $this->rData    ='';
                $this->joinData    ='';
                $this->num    =0;
            }
            function rDat_()    {
                while(!feof($this->fPointer)) {
                    $this->rData=fgets($this->fPointer);
                    if (!feof($this->fPointer)) {
                        $this->pushData[$this->num]=explode('<>', $this->rData); $this->num++;
                        $this->joinData=$this->joinData.$this->rData;
                    }
                }
                return($this->joinData);
            }
            function pDat_() {
                for ($outSide=0; $outSide<$this->num; $outSide++) {
                    print "<p><font size='2' color='#00518b'>NAME:</font><font size='2' color='#ffa500'>$this->pushData[$outSide][1]</font><div align='right'><a href='./firstBBS.php?ACTION=prnForm&TYPE=RES&PARENT=''<font size='2' color='rgb(0%, 80%, 0%)'>RES</font></a></div><br><font size='2' color='#00518b'>COMMENT:</font>\t\t<font size='2' color='#000000'>$this->pushData[$outSide][2]</font><br><hr>";
                }
            }
        }


2:[完了] chirumiru。 [MAIL] [2004/12/17 21:26 ]

どうにかできました。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World