0

我有 14 个 li 元素,其中包含各种信息,并认为最好将它们全部包装到一个 php 循环中并使用变量和数组来填补空白。

我遇到了两个问题。第一个是我没有从数组描述或标题中返回任何元素。

下一个问题是文件名$iFINAL.pdf——它应该只是$i附加了 FINAL 的变量。

我通常不会使用 EOT,但在这种情况下,它似乎比转义所有各种引号要快得多。

任何帮助表示赞赏,谢谢!

    <?php
$description = array("Decription 1 here","description 2 here");
$title = array("title 1","titlesfdfs ","sdfsdsd","wqeqe","","");

for($i=1; $i <= 14; $i++){

    if($i < 10){
        $i = "0".$i;
    }

$body = <<<EOT

<h3><a href="#">Chapter $i - $title[$i]</a></h3>
<div class=trainingItemListContainer>
    <div class="mainDetails">
        <p><strong>Introduction:</strong> $description[$i]</p>
    </div>
    <div class="subDetails">
        <div class="viewAndDownload">
            <a href="training_chap$i.php"><p>Click to view the chapter</p></a>
        </div>
        <div class="viewAndDownload">
            <a href="../download.php?filename=/trainingHandoutPDF/$iFINAL.pdf">&nbsp;&nbsp;&nbsp;&nbsp;Click to download the PDF file&nbsp;&nbsp;&nbsp;<img src="../images/disk.png" alt="downloadIcon" border="0"/></a>
        </div>
    </div>
</div>
EOT;

echo $body;
}
4

4 回答 4

2

您的代码有两个主要问题:

  • 您将值设置为$ito0102。这将导致脚本产生未定义索引错误,因为您的数组中没有这样的索引。
  • 您没有将变量包含在{ }. 如果将其括起来,将使用实际变量值。例如:{$i}

例子:

$body = <<<EOT

<h3><a href="#">Chapter {$i} - {$title[$i]}</a></h3>
<div class=trainingItemListContainer>
    <div class="mainDetails">
        <p><strong>Introduction:</strong> {$description[$i]}</p>
    </div>
    <div class="subDetails">
        <div class="viewAndDownload">
            <a href="training_chap$i.php"><p>Click to view the chapter</p></a>
        </div>
        <div class="viewAndDownload">
            <a href="../download.php?filename=/trainingHandoutPDF/{$i}FINAL.pdf">&nbsp;&nbsp;&nbsp;&nbsp;Click to download the PDF file&nbsp;&nbsp;&nbsp;<img src="../images/disk.png" alt="downloadIcon" border="0"/></a>
        </div>
    </div>
</div>
EOT;
于 2013-07-25T21:56:19.863 回答
1

您的代码中存在问题,您正在更改$i(在此处重新分配另一个值)的值:

if($i < 10){
    $i = "0".$i;
}

您也可以使用另一个变量,例如$j

 if($i < 10){
    $j = "0".$i;
 }else{
    $j = $i;
 }

这可能不是您的确切问题,但它可能会帮助您改进代码。

于 2013-07-25T21:56:55.560 回答
1

这里有几个问题:

(1)此代码导致问题:

if($i < 10){
    $i = "0".$i;
}

为什么?如果你做了一个var_dump($i)(=简单的调试),你会意识到

$title[1]不同于$title['01']

解决方法:删除上面的代码。

(2) PHP 中的数组将从索引 0 开始,而不是 1。

echo $description[1];

将在此处输出“描述 2”。

解决方案

for ($i = 0; $i < 14; $i++) {

   $number = str_pad(($i + 1), 2, "00", STR_PAD_LEFT);
   ...
   <h3><a href="#">Chapter $number - $title[$i]</a></h3>

看到它在这里工作:http ://codepad.viper-7.com/489laJ

于 2013-07-25T21:57:34.353 回答
0

为什么不试试这个?

<?php
$description = array("Decription 1 here","description 2 here");
$title = array("title 1","titlesfdfs ","sdfsdsd","wqeqe","","");

for($i=1; $i <= 14; $i++){

    if($i < 10){
        $i = "0".$i;
    }

?>

<h3><a href="#">Chapter <?php print($i." - ".$title[$i]); ?></a></h3>
<div class=trainingItemListContainer>
    <div class="mainDetails">
        <p><strong>Introduction:</strong> <?php print($description[$i]); ?></p>
    </div>
    <div class="subDetails">
        <div class="viewAndDownload">
            <a href="training_chap<?php print($i); ?>.php"><p>Click to view the chapter</p></a>
        </div>
        <div class="viewAndDownload">
            <a href="../download.php?filename=/trainingHandoutPDF/<?php print($i);?>FINAL.pdf">&nbsp;&nbsp;&nbsp;&nbsp;Click to download the PDF file&nbsp;&nbsp;&nbsp;<img src="../images/disk.png" alt="downloadIcon" border="0"/></a>
        </div>
    </div>
</div>

如果您稍后有 PHP 代码,只需再次打开<?标签!

于 2013-07-25T21:55:11.123 回答