在php中引用循环中的对象

在php中引用循环中的对象,php,class,iteration,Php,Class,Iteration,我想使用for循环访问同一类的10个对象。 原因是我想制作一个数据表,但我觉得手工编写表中每一行(对象)的所有html标记并不合适 我的代码是: <?php for ($i=1;$i<=10;$i++){ ?> <tr> <td><? echo $i;?></td><td><?php echo $office1->pc;?></td>

我想使用for循环访问同一类的10个对象。 原因是我想制作一个数据表,但我觉得手工编写表中每一行(对象)的所有html标记并不合适

我的代码是:

<?php 
    for ($i=1;$i<=10;$i++){
?>
        <tr>
            <td><? echo $i;?></td><td><?php echo $office1->pc;?></td>
            <td><?php echo $office1->pc*$office1->pcPowerPerUnit;?></td>

            <td><? echo $office1->printer;?></td>
            <td><?php echo $office1->printer*$office1->printerPowerPerUnit;?></td>

            <td><? echo $office1->lights;?></td>
            <td><?php echo $office1->lights*$office1->lightsPowerPerUnit;?></td>

            <td><? echo $office1->aircondition;?></td>
            <td><?php echo $office1->aircondition*$office1->airconPowerPerUnit;?></td>

            <td><? echo $office1->server;?></td>
            <td><?php echo $office1->server*$office1->serverPowerPerUnit;?></td>

        </tr>
     <?php } ?>

我认为可以做的是将引用$office1->pc(例如)更改为$office[$I]->pc或类似的东西,但这似乎不起作用。我还在php手册中搜索对象迭代,但这没有帮助

对象的数量是固定的(10),属性已经计算出来,可以进行回显。

使用:

用于($i=1;$i pc;
//相当于:
$office1->pc;
//当$i==1时
// ...
}
使用:

用于($i=1;$i pc;
//相当于:
$office1->pc;
//当$i==1时
// ...
}
foreach(数组($office1、$office2、$o3、$o4)为$o){
?>
...
...  ...
foreach(数组($office1、$office2、$o3、$o4)作为$o){
?>
...
...  ...

您可以使用一种特殊的语法来引用您的变量,如下所示:


您可以使用特殊语法来引用这样的变量。如下所示:


首先将列输出值存储到数组中:

$columns = array($i, $office->pc, $office->pc*$office->pcPowerPerUnit, ...);
然后,可以独立于变量中的值输出列:

echo '<tr><td>', implode('</td><td>', $columns), '</td></tr>';
完成。但是,如果由于某种原因(例如,一次不想更改太多),您可以执行类似操作:

foreach(range(1, 10) as $i)
{
    $office = ${'office'.$i};
    $columns = array($i, $office->pc, $office->pc*$office->pcPowerPerUnit, ...);
    echo '<tr><td>', implode('</td><td>', $columns), '</td></tr>';
}
foreach(范围(1,10)为$i)
{
$office=${'office'.$i};
$columns=array($i,$office->pc,$office->pc*$office->pcPowerPerUnit,…);
回声“”,内爆(“”,$columns),“”;
}

首先将列输出值存储到数组中:

$columns = array($i, $office->pc, $office->pc*$office->pcPowerPerUnit, ...);
然后,可以独立于变量中的值输出列:

echo '<tr><td>', implode('</td><td>', $columns), '</td></tr>';
完成。但是,如果由于某种原因(例如,一次不想更改太多),您可以执行类似操作:

foreach(range(1, 10) as $i)
{
    $office = ${'office'.$i};
    $columns = array($i, $office->pc, $office->pc*$office->pcPowerPerUnit, ...);
    echo '<tr><td>', implode('</td><td>', $columns), '</td></tr>';
}
foreach(范围(1,10)为$i)
{
$office=${'office'.$i};
$columns=array($i,$office->pc,$office->pc*$office->pcPowerPerUnit,…);
回声“”,内爆(“”,$columns),“”;
}

您需要告诉我们,$office1是什么?它是对象还是数组?所有对象的名称是否相同,基本上是$office1、$office2等等?是的,您可以这样做->pc
只要它是一个包含对象的数组。问题可能是,你正在将html放入你的php中。你需要在
for
循环之后关闭php标记你有拼写错误$office1}你确定你需要10个对象吗?(与拥有一个对象并重复使用10次不同的方法不同…)您需要告诉我们,$office1是什么?它是一个对象还是数组?所有对象的名称是否相同,基本上是$office1、$office2等等?是的,您可以这样做->pc
只要它是一个包含对象的数组。问题可能是,你正在将html放入你的php中。你需要在
for
循环之后关闭php标记你有拼写错误$office1}你确定你需要10个对象吗?(与拥有一个对象并重复使用它10次不同的方法不同…)好吧,谢谢。事实上,正如我所看到的,变量在那个时候非常有用,但我使用了${'office'.$I}->pc技巧,效果很好。@SotirisGanouris:the
${'office'.$I}->pc
语法基本上也在做同样的事情,只是没有临时变量。这都是动态变量名解析。:-)好的,谢谢。事实上,变量在那个时候非常有用,正如我所看到的,但我使用了${office.$I}->pc技巧,效果很好。@SotirisGanouris:the
${office.$I}->pc
语法基本上也在做同样的事情,只是没有临时变量。它都是动态变量名解析。:-)