您可能正在寻找一种从字符串中获取对象属性的方法,方法如下:
$instance->{$var.'string-part'.$otherVar};
在你的情况下,那将是:
echo $info->{'rule'.$i};
有关更多详细信息,请参阅有关变量 variables 的手册页。尤其是标题为“#1 变量属性”的部分您应该会感兴趣...
但是由于您在<ul>
循环之前和之后回显标签,我假设您正在尝试创建一个列表,在这种情况下,您的echo 语句应如下所示:
echo '<li>', $info->{'rule'.$i}, '</li>';//comma's not dots!
请注意,由于您的循环,您永远不会遍历整个$info
对象for
。你应该写:
for ($i=1,$j = count($info);$i<=$j;$i++)
{
echo $info->{'rule'.$i};
}
请注意,我正在分配count($info)
一个变量,以避免调用count
循环的每次迭代。您没有更改对象,因此count
无论如何该值将是恒定的......或者只是使用foreach
:
foreach($info as $property => $val)
{//val is probably still an object, so use this:
echo $info->{$property};
}
在最后一种情况下,您可以省略 周围的卷曲$property
,但不建议这样做,但您可以在这里做的是检查相关属性是否为rule
属性:
foreach($info as $property => $val)
{
if (substr($property, 0, 4) === 'rule')
{//optionally strtolower(substr($property, 0, 4))
echo '<li>', $info->{$property}, '<li>';
}
}
鉴于您提供的信息,这是做您正在做的事情的最简单方法......