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

PHP:未定义属性stdClass,但该属性已存在,php,class,properties,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_ar

下面是我的班级

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
显示它时, 有错误显示
未定义属性stdClass
。我已经定义了正在使用的属性,那么为什么会出现这些错误呢?下面是我用来 显示数据

$materialTypeObj = new MaterialType();

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

每次执行
$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;
}

}