PHP oop Mysql获取变量属性
我可以设法从我的数据库中获取一个字段,该字段返回一个具有两个属性(如id、高度、宽度、顶部等)的对象。。。其中一个属性叫做props,它包含我需要的属性名称数组,例如:('top','bottom','left','right')。现在我要做的是迭代$props值,从原始对象获取属性,并将其添加到字符串中。假设从数据库中提取的类名为$element,我有:PHP oop Mysql获取变量属性,php,mysql,mysqli,Php,Mysql,Mysqli,我可以设法从我的数据库中获取一个字段,该字段返回一个具有两个属性(如id、高度、宽度、顶部等)的对象。。。其中一个属性叫做props,它包含我需要的属性名称数组,例如:('top','bottom','left','right')。现在我要做的是迭代$props值,从原始对象获取属性,并将其添加到字符串中。假设从数据库中提取的类名为$element,我有: $props=$element->props; foreach($props as $property){
$props=$element->props;
foreach($props as $property){
$style .= $property." : ".$element->{$property}."; ";
}
unset($property);
但我最终的$style是类似于
top:;左:;底部:;右:显然,代码的$element->{$property}
部分没有返回任何内容。我尝试了很多替代方法,但我不知道发生了什么,有人能帮我吗?如果您的对象确实有一个属性,例如top
,我会尝试这种方法,因为如果您试图到达元素对象的上|左|下|右属性,则不需要花括号:
$props=$element->props;
foreach($props as $property){
$style .= $property . " : " . $element->$property . "; ";
}
如果我可以建议一个小的调整,使您在这里所做的事情更加明显,字符串连接可能会变得非常难看,特别是如果您使用的分号在PHP中很有意义:
$props = $element->props;
foreach($props as $property){
$style_format = '%s : %s; ";
$style .= sprintf($style_format, $property, $element->$property);
}
您确定有$element->top
,或$element->left
,或$element->bottom
或$element->right
?您介意从模具(打印($element))复制结果吗@CoryJThompson stdClass对象([id]=>1[type]=>image[top]=>266[left]=>285[width]=>195[height]=>184[props]=>Array([0]=>position[1]=>border width[2]=>width[3]=>height[4]=>top[5]=>left[6]=>边框颜色[7]=>margin))@qwertymk是的,我已经分别检查了它们,它们work@hakim-新浪对我有用我试过不用花括号,我甚至试过echo$element->$property;这不会返回任何内容:(那么我建议$element->top等不存在;至少不像您预期的那样。是的,我认为这就是问题所在,由于某些原因,每个属性的开头都有额外的空间!无论如何,感谢您的帮助