2011-03-04 82 views
1

以下是我的课程。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; 
} 

回答

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

}