我试图循环一个对象数组并执行一些逻辑[参见函数]。但是,我在评论的行上得到了“试图获取非对象的属性” -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"
}
...
答案 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;
}