使用foreach在foreach中使用php

时间:2015-07-03 15:47:16

标签: php foreach

所以我使用foreach输出我的table-cells,并且遇到输出问题。

这就是我想要实现的目标:

<tr>
	<th scope="col"> <h3>Ember</h3>
		<p> Xeon E3-1231</p>
	</th>
	<th scope="col"> <h3>Ember</h3>
		<p> Xeon E3-1231</p>
	</th>
	<th scope="col"> <h3>Ember</h3>
		<p> Xeon E3-1231</p>
	</th>
	<th scope="col"> <h3>Ember</h3>
		<p> Xeon E3-1231</p>
	</th>
	<th scope="col"> <h3>Ember</h3>
		<p> Xeon E3-1231</p>
	</th>
</tr>

这是我的代码:

<tr>
    <?php 
    $tableheading = rwmb_meta( 'tb_table1_heading', 'type=text' );
    foreach ( $tableheading as $heading )
    { ?>
<th scope="col"> <h3><?php echo $heading; ?></h3>
<p>
<?php 
            $tablesub = rwmb_meta( 'tb_table1_sub_heading' );
            if (!empty($tablesub)){

            $tablesubheading = rwmb_meta( 'tb_table1_sub_heading', 'type=text' );
            foreach ( $tablesubheading as $subheading )
            { echo $subheading; } 

        } ?>
        </p>
    </th>
    <?php } ?>
</tr>

这给了我这个:

<tr>
  <th scope="col">
    <h3>Ember</h3>
    <p>
      Xeon E3-1231v3Xeon E3-1231v3 2Xeon E3-1231v3 3Xeon E3-1231v3 4Xeon E3-1231v3 5Xeon E3-1231v3 6</p>
  </th>
  <th scope="col">
    <h3>Ember2</h3>
    <p>
      Xeon E3-1231v3Xeon E3-1231v3 2Xeon E3-1231v3 3Xeon E3-1231v3 4Xeon E3-1231v3 5Xeon E3-1231v3 6</p>
  </th>
  <th scope="col">
    <h3>Ember3</h3>
    <p>
      Xeon E3-1231v3Xeon E3-1231v3 2Xeon E3-1231v3 3Xeon E3-1231v3 4Xeon E3-1231v3 5Xeon E3-1231v3 6</p>
  </th>
  <th scope="col">
    <h3>Ember4</h3>
    <p>
      Xeon E3-1231v3Xeon E3-1231v3 2Xeon E3-1231v3 3Xeon E3-1231v3 4Xeon E3-1231v3 5Xeon E3-1231v3 6</p>
  </th>
  <th scope="col">
    <h3>Ember5</h3>
    <p>
      Xeon E3-1231v3Xeon E3-1231v3 2Xeon E3-1231v3 3Xeon E3-1231v3 4Xeon E3-1231v3 5Xeon E3-1231v3 6</p>
  </th>
  <th scope="col">
    <h3>Ember6</h3>
    <p>
      Xeon E3-1231v3Xeon E3-1231v3 2Xeon E3-1231v3 3Xeon E3-1231v3 4Xeon E3-1231v3 5Xeon E3-1231v3 6</p>
  </th>

</tr>

3 个答案:

答案 0 :(得分:1)

如果你的数组键是相同的,你可能想要这样的东西:

foreach( $tableheading as $index => $heading ) {
   echo $tablesubheading[$index];
}

但是,如果可以将$ tablesubheading表集成到$ tableheading中会更容易。当然,我不确定他们的钥匙是否相同!

如果是,那么在你的例子中,这将是:

<tr>
    <?php 
        $tableheading = rwmb_meta( 'tb_table1_heading', 'type=text' );
        foreach ( $tableheading as $index => $heading ) { 
    ?>
    <th scope="col"> <h3><?php echo $heading; ?></h3>
    <p>
        <?php 
                $tablesub = rwmb_meta( 'tb_table1_sub_heading' );
                if (!empty($tablesub)) {
                    $tablesubheading = rwmb_meta( 'tb_table1_sub_heading', 'type=text' );
                    echo $tablesubheading[$index];
                } 
                ?>
            </p>
        </th>
    <?php 
        } 
    ?>
</tr>

答案 1 :(得分:0)

<p>放入内循环:

foreach(...) {
   foreach(... as $foo) {
       echo "<p>$foo</p>";
   }
}

由于它们位于内部循环之外,因此您只能获得一个<p>设置,而不是每个内部项目设置一个。

答案 2 :(得分:0)

我认为你可以像这样避开第二个foreach:

$tablesubheading = rwmb_meta( 'tb_table1_sub_heading', 'type=text' );
echo $tablesubheading[0];

虽然我可能完全错误地解释了这一点。