鍍金池/ 問答/PHP  網(wǎng)絡(luò)安全/ 程序運行錯誤問題?

程序運行錯誤問題?

<?php

class read
{
    private $data;

    function __construct()
    {
        if ($db = new DataBase()) {
            $this->data = $db->showData();
        }
    }

    function __toString()
    {
        $out = '';
        while ($this->data) {
            $out .= '<tr>';
            $out .= "</td>'".$this->data["id"]."'</td>";
            $out .= "</td>'".$this->data["title"]."'</td>";
            $out .= "</td>'".$this->data["u_id"]."'</td>";
            $out .= "</td>'".$this->data["content"]."'</td>";
            $out .= "</td>'".$this->data["time"]."'</td>";
            $out .= '</tr>';
        }
        $out .= '</table></div>';
        return $out;
    }
}

這段代碼哪里有問題嗎?運行總是出錯。

回答
編輯回答
浪蕩不羈
   while ($this->data) {
            $out .= '<tr>';
            $out .= "</td>'".$this->data["id"]."'</td>";
            $out .= "</td>'".$this->data["title"]."'</td>";
            $out .= "</td>'".$this->data["u_id"]."'</td>";
            $out .= "</td>'".$this->data["content"]."'</td>";
            $out .= "</td>'".$this->data["time"]."'</td>";
            $out .= '</tr>';
        }

這個 while循環(huán)中,$this->data的數(shù)據(jù)并沒有被修改,所以會一直在循環(huán)。
如果說 $this->data是二維數(shù)組,每個循環(huán)后應(yīng)該修改一下索引值。
樓主會這樣寫,可能是因為看到過這種寫法:

while($row=mysql_fetch_row){
   //do something
}

這個不會造成死循環(huán),是因為 mysql_fetch_row 函數(shù)會自動修改索引值。

另外,樓主的代碼,根本不需要使用循環(huán)。

2018年8月18日 02:54
編輯回答
喵小咪
 function __toString()
{
    $out = '';
    $out .= '<tr>';
    foreach($this->data as $v)
    {
        $out .= "</td>'".$v."'</td>";
    }
    $out .= '</tr>';
    $out .= '</table></div>';
    return $out;
}
2017年1月30日 13:30