0

所以我有一个由 foreach 循环生成的表。在表格中,id 用于加载模式。我想知道如何生成从 1 开始的数字序列,然后是 2、3 等等。我知道我可以为此使用http://www.php.net/manual/en/function.sprintf.php,但我不知道如何在现有循环中使用?我在代码中使用 ????

我想这样做的原因是为读者添加一些结构,它没有其他功能。

代码:

<table class="table table-hover table-bordered">
    <thead>
          <tr>
            <th>#</th>
            <th>Fråga:</th>
          </tr>
    </thead>
    <tbody>
        <?php foreach ($modals as $key => $title) { ?>
        <tr>
          <td><?php ???? ?></td>
          <td><a href="#cptmodal_<?php echo $title['id']; ?>" data-toggle="modal"><?php echo $title['title'];?></a></td>
        </tr>
        <?php } ?>
    </tbody>
    </table>    
4

2 回答 2

5

我想这就是你要找的。不过有很多方法可以做到这一点。

<?php $i = 0; ?>
<?php foreach ($modals as $key => $title): ?>
    <?php $i++; ?>
    <tr>
        <td><?php echo $i; ?></td>
        <td><a href="#cptmodal_<?php echo $title['id']; ?>" data-toggle="modal"><?php echo $title['title'];?></a></td>
    </tr>
<?php endforeach; ?>

编辑:你根本不使用$key,你可以只使用一个for循环,使代码更清晰。

 <?php for($i = 0; $i < count($modals); $i++): ?>
    <tr>
        <td><?php echo $i; ?></td>
        <td><a href="#cptmodal_<?php echo $modals[$i]['id']; ?>" data-toggle="modal"><?php echo $modals[$i]['title'];?></a></td>
    </tr>
<?php endfor; ?>

编辑:根据数组的结构,您可以使用$key; IE。如果它看起来像这样:

$modals = array(
    0 => array('id' => $id, 'title' => $title),
    1 => array('id' => $id, 'title' => $title),
    2 => array('id' => $id, 'title' => $title),
);

<?php foreach ($modals as $key => $title): ?>
    <tr>
        <td><?php echo $key + 1; /* Note the +1 here (arrays start from 0) */ ?></td>
        <td><a href="#cptmodal_<?php echo $title['id']; ?>" data-toggle="modal"><?php echo $title['title'];?></a></td>
    </tr>
<?php endforeach; ?>
于 2013-08-03T16:17:41.787 回答
3
<?php int $i = 1; foreach ($modals as $key => $title) { ?>
    <tr>
      <td><?php echo($i); $i++; ?></td>
      <td><a href="#cptmodal_<?php echo $title['id']; ?>" data-toggle="modal"><?php echo $title['title'];?></a></td>
    </tr>
    <?php } ?>
于 2013-08-03T16:18:19.300 回答