无法获得算法

时间:2014-03-19 15:57:51

标签: php algorithm object foreach

我正在研究算法并且有一个对象数组,我需要打印每个对象的第一个属性,而不是第二个属性,依此类推。我不知道对象的名称或属性数量。 目前,我的算法使用foreach语句获取每个对象并打印所有属性。

有人可以建议一个解决方案吗?

foreach ($variants as $variant) {
  $combination = $this->Product_model->getVariationCombination($variant->id);

  if ($combination!=NULL)
    foreach($combination as $combi){
      echo $variant_options[$combi->product_variant_option_value_id];
    }
}

这有很多不同的东西,但我会尝试解释它。 $variant_options包含产品属性的所有可能值。 (例如,颜色 - >红色)。 $combination具有产品的所有不同属性(例如可用的所有类型的T恤)。 现在,我要做的是打印第一个$variant_options[$combi->product_variant_option_value_id],然后打印第二个,依此类推,而不是一次打印每个$组合的所有内容。
因此,不是打印所有颜色,然后是所有尺寸或任何属性,它应该打印T恤的颜色,然后是尺寸等等。

如果需要,我可以提供任何变量的内容

1 个答案:

答案 0 :(得分:0)

您可以使用get_object_vars将所有对象的公共属性转换为关联数组,而不是在该阵列上操作,而是要显示或访问属性。如果属性是受保护/私有的,则您需要一种方法来返回属性。

foreach($variants as $variant){
    $properties = get_object_vars($variant);
    var_dump($properties);
    }
}


class TShirt {

    public $color;
    public $size;

    public function __construct($color, $size){
        $this->size = $size;
        $this->color = $color;
    }
}

$a = new TShirt('red', 'medium');
$b = new TShirt('blue', 'large');

$shirts = array($a, $b);

foreach($shirts as $shirt){

    $properties = get_object_vars($shirt);
    foreach ($properties as $key=>$value){
        echo "The {$key} is {$value}.";
    }
}

文档:http://us2.php.net/get_object_vars