2014-03-19 46 views
0

我正在研究一種算法並且有一個對象數組,我需要打印每個對象的第一個屬性,而不是第二個屬性等等。我不知道對象的名稱或屬性的數量。 目前,我的算法獲取每個對象並使用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恤的顏色,尺寸等等。

如果需要,我可以提供的任何變量

回答

0

可以使用get_object_vars的內容獲取對象的所有公共屬性成一個關聯數組,不是你去找那個陣列上運行,但是你想顯示或訪問屬性。如果這些屬性是protected/private,那麼您將需要一個方法來返回屬性。

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