请原谅我糟糕的解释技巧。对PHP非常陌生。
所以我在页面的左侧建立一个动态编号列表。每个不同的任务都被放入它自己的数组中(由"name"answers"content"组成),所有任务都被放入由这些任务及其详细信息组成的数组中。任务及其顺序编号和名称将显示在左侧的侧边栏中,而内容将循环显示在页面的右侧(如果这还不够清楚,这是一个带有左侧侧边栏和右侧主内容窗口的页面)
$task0 = array('name' => 'Update status in CRM', 'content' => 'blargeyblarg');
$task1 = array('name' => "Pre Meeting Email:", 'content' => 'blargeyblarg2' );
$task2 = array('name' => "Welcome cover letter", 'content' => 'blargeyblarg3');
$task3 = array('name' => "Welcome email:", 'content' => 'blargeyblarg4');
$task4 = array('name' => "Initial Meeting Agenda", 'content' => 'blargeyblarg5');
$tasks = array($task0, $task1, $task2, $task3, $task4);
然而,当试图显示这个列表中任务的正确编号顺序时,我需要创建一个语句来查找以':'结尾的任务的任何'名称',因为它们将是'heading'任务,它们的样式略有不同,但与前面的任务具有相同的编号方案。
基本上,这个列表应该是:
1, 2, 3, 4, 5
<ul class="nav list-group">
<?php foreach ($tasks as $i => $task) { ?>
<?php
$is_heading = ends_with($task["name"],":");
?>
<li class="list-group-item" tabindex="-1">
<a class="listgroupwrap" href="#g<?= ++$i?>">
</a>
<span class="step-number-container"> <?= +$i ?>
</span>
<span class="btn-check">
<i class="glyphicon glyphicon-ok"></i>
</span>
<!--<span class="step-checkbox"></span>-->
<span class="step-name"><?php echo $task["name"] ?>
</span>
<span class="step-show-hide">
<span class="btn">
<i class="glyphicon glyphicon-chevron-right">
</i>
</span>
</span>
</li>
<?php if (!$is_heading): ?>
<li class="list-group-item step-heading" tabindex="-1">
<a class="listgroupwrap" href="#g<?= $i +1 ?>">
</a>
<span class="step-number-container"> <?= $i?></span>
<span class="step-name"><?php echo $task["name"] ?>
</span>
<?php endif; ?>
</li>
<?php } ?>
但是它显示的是
1, 1、2、3、3、4、5、5
总共应该只有5个任务。
我在这里做错了什么,除了明显的讨厌?
根据新信息改写答案
看了输出后,我明白你在说什么了。这并不是说循环为每个任务运行两次,而是说,对于某些任务(即,非标题),每个任务输出两行。
不管是否标头,下面的输出:
<li class="list-group-item" tabindex="-1">
<a class="listgroupwrap" href="#g<?= ++$i?>"></a>
<span class="step-number-container"> <?= +$i ?></span>
<span class="btn-check">
<i class="glyphicon glyphicon-ok"></i>
</span>
<!--<span class="step-checkbox"></span>-->
<span class="step-name"><?php echo $task["name"] ?></span>
<span class="step-show-hide">
<span class="btn">
<i class="glyphicon glyphicon-chevron-right"></i>
</span>
</span>
</li>
这一行只有在它不是标题时才会得到输出:
<?php if (!$is_heading): ?>
<li class="list-group-item step-heading" tabindex="-1">
<a class="listgroupwrap" href="#g<?= $i +1 ?>"></a>
<span class="step-number-container"> <?= $i?></span>
<span class="step-name"><?php echo $task["name"] ?></span>
<?php endif; ?>
</li>
两件事。首先,需要注意的是,最后一个</li>
应该在if语句中。
其次,您需要另一个包含第一行的if语句,仅在if ($is_heading)时输出。
那就解决了