迭代对象数组时出现非对象错误

时间:2014-11-26 16:35:25

标签: php

我试图循环一个对象数组并执行一些逻辑[参见函数]。但是,我在评论的行上得到了“试图获取非对象的属性” -error。所以我检查了它是否是一个对象,而不是。在创建$product对象并对$partners_obj进行检查时,instanceof函数告诉我它确实是一个Partner对象......

所以它必须是迭代中的问题。但我没有看到什么错误......

功能

function lowest_price_for_product($product) { // $product instanceof Product == true
    $price = null;
    foreach($product->partners_obj as $partner) { // $partner instanceof Partner == false
        if(is_null($price)) {
            $price = $partner->product_price;
        } else {
            if($price > $partner->product_price) {
                $price = $partner->product_price;
            }
        }
    }
    return $price;
}

产品类

class Product {
     public $id;
     public $name;
     public $description;
     public $image;
     public $partners_obj = array();
}

合作伙伴类

class Partner {
    public $id;
    public $name;
    public $partner_url;
    public $image;
    public $product_url;
    public $product_price;
}

的var_dump($伙伴);在foreach循环中

array(3) { 
    [0]=> object(Partner)#9 (6) { 
        ["id"]=> string(1) "1" 
        ["name"]=> string(11) "Fun-&-Feest" 
        ["partner_url"]=> string(34) XXX" 
        ["image"]=> string(15) "Fun-&-Feest.png" 
        ["product_url"]=> string(56) "XXX" 
        ["product_price"]=> string(4) "8.50" 
    }
... 

1 个答案:

答案 0 :(得分:0)

尝试使用$product[] = $product->partners_obj;而不是foreach($product as $partner) { //statement }

整个功能:

function lowest_price_for_product($product) { // $product instanceof Product == true $price = null; $product[] = $product->partners_obj; foreach($product as $partner) { // $partner instanceof Partner == false if(is_null($price)) { $price = $partner->product_price; } else { if($price > $partner->product_price) { $price = $partner->product_price; } } } return $price; }