提供的对象,但foreach循环中出现无效的参数错误

时间:2014-03-18 13:12:00

标签: php object foreach stdclass

运行以下代码时,我收到了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;

        }

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

我要完成痛苦的回应。

  1. 你要使用foreach,你需要有一个数组来循环。为此你需要做格里斯所说的。

  2. var_dump工作的原因是因为一个对象是有效的,但是你不能在这个对象的项目数组中循环。当你print_r一个对象或var_dump时,它可能会将属性显示为一个数组类型查看输出,但这并不意味着你可以通过它为foreach迭代它