我的while循环递减2,我找不到原因。
我觉得我不明白PHP是如何与HTML交互的。
有什么清晰的词语吗?(请注意,字典的索引从1开始)
if (isset($title)) {
$i = sizeof($title);
while ($i > 0) {
$idnum = intostring($i);
$titletoadd = $title[$idnum];
$summarytoadd = $summary[$idnum];
$podcastblock =<<<EOD
<div class="podcast" id="podcast$idnum">
<p class="podcasttitle" id="podcasttitle$idnum">$titletoadd</p>
<div class="container column horizontal-spaced ">
<p class="podcastnumber left shrink " id="podcastnumber$idnum">$i</p>
<p class="summary grow" id="summary$idnum">$summarytoadd</p>
</div>
<audio class="audioplayer tile displaymiddle wide" id='audioplayer$idnum" controls>
<source src="audiofiles/p$i.mp3" type="audio/mpeg">
</audio>
EOD;
echo $podcastblock;
$i--;
}发布于 2016-02-20 08:18:59
您在这一行中有一个打字错误:
<audio class="audioplayer tile displaymiddle wide" id='audioplayer$idnum" controls>id属性值以单引号开头,然后以双引号结束。因此,直到下一个<audio元素之前的所有内容都被用作id的一部分,而不是单独的HTML元素。所以你只能看到所有其他的DIV。
更改为:
<audio class="audioplayer tile displaymiddle wide" id="audioplayer$idnum" controls>发布于 2016-02-20 07:54:08
首先,删除这个特定的代码$idnum = intostring($i);你不需要这个。将其更改为$idnum = $i;
如果您尝试用10或更多元素填充$title数组,它实际上并不是递减两个。通过这种方式,您可以观察正在发生的事情
以下是你的错误:
$title = array("title1", "title2");
/* The array starts from 0 index then 1, 2 and so on
once you get the size of the array it
just counts the elements in the array
but not really knowing the last index */
$i = sizeof($title);
/* in this case our $i have now the value of 2
$title[2] does not exists because we only have two elements
namely $title[0] and $title[1]... this is your first mistake */
// second mistake:
while ($i > 0)
/* our array starts from zero, with this condition,
you're basically skipping zero index (beginning of the array) */
// to fix these you need to put the following codes
$i = (count($title) - 1); /* use count instead of sizeof but they are completely the same...
subtract 1 to the total count to get the last index of the array */
while ($i >= 0) // lastly include the 0 index希望这能有所帮助。
发布于 2016-02-20 08:34:49
这段代码中没有任何东西会导致$i递减2。如果发生额外的递减,那么它必须在intostring()方法中。
然而,这里还发生了一些其他问题。您的html中有一个不可靠的单引号,并且缺少结束的div标记。我可以提出一些建议来清理一下这个问题。
试试这个:
$title = array("Title1","Title2","Title3");
$summary = array("Summary1","Summary2","Summary3");
if (isset($title)) {
for ($i= count($title); $i > 0; $i--) {
$titletoadd = $title[$i];
$summarytoadd = $summary[$i];
$podcastblock = '
<div class="podcast" id="podcast'. $i .'">
<p class="podcasttitle" id="podcasttitle'. $i .'">'. $titletoadd .'</p>
<div class="container column horizontal-spaced ">
<p class="podcastnumber left shrink " id="podcastnumber'. $i .'">'. $i .'</p>
<p class="summary grow" id="summary'. $i .'">'. $summarytoadd .'</p>
</div>
<audio class="audioplayer tile displaymiddle wide" id="audioplayer'. $i .'" controls>
<source src="audiofiles/p'. $i .'mp3" type="audio/mpeg">
</audio>
</div>';
echo $podcastblock;
}
}https://stackoverflow.com/questions/35517185
复制相似问题