【问题标题】:Can't get algorithm to work无法让算法工作
【发布时间】:2014-03-19 15:57:50
【问题描述】:

我正在研究一种算法并拥有一个对象数组,我需要打印每个对象的第一个属性,而不是第二个属性,依此类推。我不知道对象的名称或属性数量。 目前,我的算法使用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],然后是第二个,依此类推,而不是一次打印每个 $combination 的所有内容。
因此,与其先打印所有颜色,然后再打印所有尺寸或任何属性,不如先打印 T 恤的颜色,然后再打印尺寸等等。

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

【问题讨论】:

    标签: php algorithm object foreach


    【解决方案1】:

    您可以使用 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-27
      • 2020-02-23
      • 2014-12-26
      • 2017-12-22
      • 2012-02-28
      • 2015-12-01
      • 2012-01-29
      相关资源
      最近更新 更多