我正在研究算法并且有一个对象数组,我需要打印每个对象的第一个属性,而不是第二个属性,依此类推。我不知道对象的名称或属性数量。
目前,我的算法使用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 :(得分: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}.";
}
}