PHP:未定义的属性stdClass,但该属性已存在

时间:2011-03-04 03:20:47

标签: php class properties

以下是我的课程。

class MaterialType {

    public $id;
    public $name;

    function getAllMaterialType() {
        $query = "SELECT * FROM material_types";
        $result = mysql_query($query);

        $arr = array();
        while ($row = mysql_fetch_array($result)) {
            $arr[] = new MaterialType();
            $arr[]->id = $row['m_type_id'];
            $arr[]->name = $row['m_type_name'];
        }

        return $arr;
    }
}

问题是我在上面的数组中创建对象,并使用foreach显示它, 有错误说Undefined property stdClass。我已经定义了正在使用的属性,为什么会出现这些错误?下面是我用来的代码 显示数据。

$materialTypeObj = new MaterialType();

foreach($materialTypeObj->getAllMaterialType() as $mat) {
    echo $mat->name;
}

1 个答案:

答案 0 :(得分:2)

每次执行$array[] =时,它会在数组末尾插入一个新元素。你需要做的是:

class MaterialType {

public $id;
public $name;


function getAllMaterialType() {

    $query = "SELECT * FROM material_types";
    $result = mysql_query($query);

    $arr = array();
    while($row = mysql_fetch_array($result)) {
        $mat = new MaterialType();
        $mat->id = $row['m_type_id'];
        $mat->name = $row['m_type_name'];
        $arr[] = $mat;
    }

    return $arr;
}

}