在php中引用循环中的对象
我想使用for循环访问同一类的10个对象。 原因是我想制作一个数据表,但我觉得手工编写表中每一行(对象)的所有html标记并不合适 我的代码是:在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>
<?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
语法基本上也在做同样的事情,只是没有临时变量。它都是动态变量名解析。:-)