PHP: Неопределенное свойство stdClass, но свойство уже существует

Ниже мой класс.

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

Каждый раз, когда вы делаете $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; } }