0
<?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;
    }
}

这段代码哪里有问题吗?运行总是出错。

2 个回答
0

已采纳
 function __toString()
{
    $out = '';
    $out .= '<tr>';
    foreach($this->data as $v)
    {
        $out .= "</td>'".$v."'</td>";
    }
    $out .= '</tr>';
    $out .= '</table></div>';
    return $out;
}
0
   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循环中,$this->data的数据并没有被修改,所以会一直在循环。
如果说 $this->data是二维数组,每个循环后应该修改一下索引值。
楼主会这样写,可能是因为看到过这种写法:

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

这个不会造成死循环,是因为 mysql_fetch_row 函数会自动修改索引值。

另外,楼主的代码,根本不需要使用循环。

撰写答案

你可能感兴趣的

推广链接