PHP - 通过变量获取对象属性

2022-08-31 00:32:59

我有一个具有许多属性的对象。某些属性的名称以相同的文本字符串开头(在我的示例中为“项目符号”),后跟一个整数。

我可以按如下方式获取属性值:

echo $objectName->bullet1;
echo $objectName->bullet2;
echo $objectName->bullet3;

等等。

我正在尝试编写一个 for 循环来获取其中的前 20 个,目前它看起来有点像:

for ($i = 1; $i <= 20; $i++){
 if ($objectName->bullet$i){
  echo $objectName->bullet$i;
 }
}

但这行不通。我知道我可以写这样的东西

$bulletsArray[1] = $objectName->bullet1;
$bulletsArray[2] = $objectName->bullet2;
$bulletsArray[3] = $objectName->bullet3;

一直到20,然后放一个for循环,但我相信一定有一个更干净的方式。有人能给我指出正确的方向吗?


答案 1

这是你如何做到这一点:

for ($i = 1; $i <= 20; $i++){
    $propertyName = "bullet$i";
    if ($objectName->$propertyName){
        echo $info->$propertyName;
    }
}

虽然我认为使用数组而不是对象会是一个更好的解决方案。


答案 2
$var = 'myVariable';
$value = $object->$var;

是 PHP 中按名称访问字段的正确语法。

在你的情况下,它看起来像这样:

for ($i = 1; $i <= 20; $i++) 
{
     $var = 'bullet'.$i;

     if ($objectName->$var)
     {
          echo $info->$var;
     }
}

推荐