运行以下代码时,我收到了Message: Invalid argument supplied for foreach()
:
foreach($combination as $combi){
var_dump($combi);
$tArr[]=$variant_options[$combi->product_variant_option_value_id];
}
当我var_dump $combination
时,我得到object(stdClass)#60 (8)//and the whole content
。那么它有什么不好的呢?
我也可以发布$combination
的内容,但它的内容很多。
知道我应该做什么吗?
由于
编辑: var_dump($ combination)输出:
array(8) { [0]=> object(stdClass)#60 (8) { ["id"]=> string(1) "1" ["product_variant_option_id"]=> string(1) "1" ["product_variant_option_value_id"]=> string(1) "1" ["sku"]=> string(0) "" ["price"]=> string(4) "0.00" ["saleprice"]=> string(4) "0.00" ["quantity"]=> string(1) "0" ["weight"]=> string(1) "0" }
[1]=> object(stdClass)#73 (8) { ["id"]=> string(1) "2" ["product_variant_option_id"]=> string(1) "1" ["product_variant_option_value_id"]=> string(1) "4" ["sku"]=> string(0) "" ["price"]=> string(4) "0.00" ["saleprice"]=> string(4) "0.00" ["quantity"]=> string(1) "0" ["weight"]=> string(1) "0" } }
EDIT2:
foreach($variants as $variant){
$combination=$this->Product_model->getVariationCombination($variant->id);
$tArr=array();
foreach($combination as $combi){
$tArr[]=$variant_options[$combi->product_variant_option_value_id];
}
其中getVariationCombination
是:
public function getVariationCombination($product_variant_id){
$query=$this->db->get_where('product_variant_combination',array('product_variant_option_id'=>$product_variant_id));
$variants=array();
foreach ($query->result() as $row)
{
$variants[]=$row;
}
if(count($variants)>0) return $variants;
return null;
}
答案 0 :(得分:1)
迭代一个对象,你必须实现http://www.php.net/manual/en/class.iterator.php或http://www.php.net/manual/en/class.generator.php或 http://www.php.net/manual/en/class.iteratoraggregate.php
答案 1 :(得分:1)
我要完成痛苦的回应。
你要使用foreach,你需要有一个数组来循环。为此你需要做格里斯所说的。
你var_dump
工作的原因是因为一个对象是有效的,但是你不能在这个对象的项目数组中循环。当你print_r
一个对象或var_dump
时,它可能会将属性显示为一个数组类型查看输出,但这并不意味着你可以通过它为foreach迭代它