【问题标题】:PHP: Undefined property stdClass, but the property is already existsPHP:未定义属性stdClass,但该属性已经存在
【发布时间】:2011-03-04 03:20:47
【问题描述】:

下面是我的课。

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

【问题讨论】:

    标签: php class properties


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-12
      • 2011-03-05
      • 2016-12-29
      • 1970-01-01
      • 1970-01-01
      • 2016-10-03
      相关资源
      最近更新 更多