使用php增加foreach的初始值

时间:2018-04-11 06:32:11

标签: php foreach

我试图找到一种在foreach循环中实现计数器初始变量的方法。所以我需要的是这样的东西:

<?php

$maxAttributeSections = 15;
$i = 1;

?>

<table class="border">
<?php foreach ($this->{'attributeSectionAttribute' . $i} as $label => $value): ?>
    <tr class="attribute-pane">
        <td class="attribute-pane-title" width="26%"><?= $label; ?></td>
        <td class="attribute-pane-title border" width="74%"> <?= $value["text"]; ?></td>
    </tr>
<?php $i++; endforeach; ?>
</table>

我需要将该attributeSectionAttribute变量循环15次。所以是attributeSectionAttribute1,attributeSectionAttribute2,attributeSectionAttribute3 ... 15。

我有点被困,所以感谢任何帮助。

5 个答案:

答案 0 :(得分:0)

<?php 
foreach ($this->{'attributeSectionAttribute' . $i} as $label => $value):

if($i == $maxAttributeSections )
break; //this will break the loop once it reaches 15

?>
    <tr class="attribute-pane">
    ....

答案 1 :(得分:0)

只是添加简单的条件

<table class="border">
<?php 
    $arr = $this->{'attributeSectionAttribute' . $i};
    foreach ($arr as $label => $value): 
?>
    <tr class="attribute-pane">
        <td class="attribute-pane-title" width="26%"><?= $label; ?></td>
        <td class="attribute-pane-title border" width="74%"> <?= $value["text"]; ?></td>
    </tr>
<?php 
    $i++; 
    //JUST ADD SIMPLE CONDITION
    if($i > $maxAttributeSections){
        break;
    }
    endforeach; 
?>
</table>

答案 2 :(得分:0)

您无法在foreach()条件内增加 ,因此请使用for()循环: -

<?php for ($i = 1; $i <= 15; $i++) : ?> 
<table class="border"> 
    <?php foreach ($this->{'attributeSectionAttribute' . $i} as $label => $value): ?> 
        <tr class="attribute-pane">
            <td class="attribute-pane-title" width="26%"><?= $label; ?></td> 
            <td class="attribute-pane-title border" width="74%"><?= $value["text"]; ?> </td> 
        </tr> 
    <?php endforeach; ?> 
</table> 
<?php endfor; ?>

答案 3 :(得分:0)

您应该使用for()循环代替......

<table class="border">
<?php 
for ( $i = 1; $i<= 15 $i++ ):
    $label = 'attributeSectionAttribute' . $i;    // Correct this
    $value = $this->{'attributeSectionAttribute' . $i};
?>
    <tr class="attribute-pane">
        <td class="attribute-pane-title" width="26%"><?= $label; ?></td>
        <td class="attribute-pane-title border" width="74%"> <?= $value["text"]; ?></td>
    </tr>
<?php endfor; ?>
</table>

我不确定$label应该显示什么,因此我将其保留为字段名称,可能是您必须更改此内容以适合您的后续操作。< / p>

答案 4 :(得分:0)

所以,问题是初始值根本没有增加。 $ this-&gt; {'attributeSectionAttribute'。 $ i}始终是$ this-&gt; attributeSectionAttribute1,因为该变量不在foreach主体中。我通过添加for循环并将foreach放入其中来解决了这个问题:

<?php for ($i = 1; $i <= 15; $i++) : ?>
<table class="border">
    <?php foreach ($this->{'attributeSectionAttribute' . $i} as $label => $value): ?>
        <tr class="attribute-pane">
            <td class="attribute-pane-title" width="26%"><?= $label; ?></td>
            <td class="attribute-pane-title border" width="74%"><?= $value["text"]; ?> </td>
        </tr>
    <?php endforeach; ?>
</table>
<?php endfor; ?>