2015-05-13 115 views
2

我有30个变量要显示,但是写代码30次并不聪明。我怎样才能改善这个代码?谢谢!!PHP动态变量

<?php if ($dimension_01_label) { ?> 
    <tr> 
    <td><?= $dimension_01_label ?></td> 
    <td><?= $dimension_01 ?></td> 
    </tr> 
<?php }; ?> 
<?php if ($dimension_02_label) { ?> 
    <tr> 
    <td><?= $dimension_02_label ?></td> 
    <td><?= $dimension_02 ?></td> 
    </tr> 
<?php }; ?> 
<?php if ($dimension_03_label) { ?> 
    <tr> 
    <td><?= $dimension_03_label ?></td> 
    <td><?= $dimension_03 ?></td> 
    </tr> 
<?php }; ?> 
+1

使在它呀 –

+0

,代替30个变量的阵列和循环,有一个阵列等'$尺寸[“$标签”] = $ value'或'$尺寸[0] = array($ label,$ value)' – Anthony

回答

0

如果你重做了你的变量结构和使用数组,但使用当前的格式,你可以做一些事情会更容易like-

<?php 
for($i=1;$i<=30;$i++){ 
    if (${"dimension_".str_pad($i, 2, "0", STR_PAD_LEFT)."_label"}) { ?> 
    <tr> 
    <td><?= ${"dimension_".str_pad($i, 2, "0", STR_PAD_LEFT)."_label"} ?></td> 
    <td><?= ${"dimension_".str_pad($i, 2, "0", STR_PAD_LEFT)} ?></td> 
    </tr> 
<?php 
    } 
    } 
?> 
+0

你是我的英雄!谢谢! –

0

您可以使用variable of variable -

for($i = 1; $i <=30; $i++) { 
    $var1 = "dimension_".str_pad($i, 2, 0, STR_PAD_LEFT)."_label"; 
    $var2 = "dimension_".str_pad($i, 2, 0, STR_PAD_LEFT); 
    if ($$var1) { 
     echo "<td>".$$var1."</td><td>".$$var2."</td>"; 
    } 
} 

Chekc Demo

+0

这段代码工作正常,但是当你在之前的第一个​​和之后最后在表中构建行时更好!但是,非常感谢! –

0
<?php 
for($i = 1; $i++; $i<=30){ 
    ?> 
    <tr> 
    <td><?php print $dimension_.$i."_label"; ?></td> 
    <td><?php print $dimension_.$i; ?></td> 
    </tr> 
    <?php 
} 
?> 
+0

这没有考虑到在01,02等中的OPs'0' – Sean

+0

你可以首先使用'str_pad($ i,2,“0”,STR_PAD_LEFT)' – Elyor

+0

',在这种情况下是必要的改变“for”在$ i <30之后放置$ i ++,然而,在我的情况下,使用wordpress,这个循环不打印结果... –

0

使用这样的事情

$dimension[0] = something; 
$dimension[1] = something; 

和等等......

并在打印它们的时间

for($i=0;$i<count($dimension);$i++) 
{ ?> 
<tr> 
<td><?= $dimension[$i] ?></td> 
<td><?= $dimension[$i] ?></td> 
</tr> 
<?php 
} 

?>