使用数组在列表中打印结果

时间:2014-01-28 20:35:52

标签: php arrays

我只是创建一个php文件,使用数组

将结果打印在列表中

我的代码是:

<?php $targets = ["Test"=> array(
                      "fake1"=>"http://fakeimg.pl/$i/",
                      "fake2"=>"http://fakeimg.pl/$i/?text=Hello")
                 ]; ?>

<ul id="gallery_img">
    <?php
    $start = 100;
    $end = 200;
    for( $i=$start; $i<=$end; $i++){
        if($i <= 99 && $i >= 10){
            $target = $targets["Test"]["fake1"];
        }if($i >= 100){
            $target = $targets["Test"]["fake2"];
        }
        echo "<li><img src=\"$target\" alt=\"$i\" title=\"$i\" /></li>";
    }
    ?>
</ul>

for()是将数字保持在100到200之间,并在列表中打印img,图像的src在数组上。

当我在数组中声明变量$i时遇到问题,我称之为$target = $targets["Test"]["fake2"] $i变量不会从for()中取出它那我做了什么?请帮帮我。

2 个答案:

答案 0 :(得分:0)

似乎在$ targets数组的声明方式中存在一些语法错误。试试这个:

<?php $targets = array("Test"=>array(
                                        "fake1"=>"http://fakeimg.pl/",
                                        "fake2"=>"http://fakeimg.pl/?text=Hello")
                 ); ?>

<ul id="gallery_img">
    <?php
    $start = 100;
    $end = 200;
    for( $i=$start; $i<=$end; $i++){
        if($i <= 99 && $i >= 10){
            $target = $targets["Test"]["fake1"];
        }if($i >= 100){
            $target = $targets["Test"]["fake2"];
        }
        echo "<li><img src=\"$target\" alt=\"$i\" title=\"$i\" /></li>";
    }
    ?>
</ul>

此外 - 由于$ start为100,因此永远不会满足第一个条件。如果您想要一些带有[“fake1”]内容的输出,请设置$start = 11

答案 1 :(得分:0)

您正尝试将$target数组中包含的字符串用作模板。它们不会在您的for循环中或其他任何地方进行动态重新评估。您可以使用sprintf来实现您的目标,但是:

<?php $targets = ["Test"=> array(
                      "fake1"=>"http://fakeimg.pl/%d/",
                      "fake2"=>"http://fakeimg.pl/%d/?text=Hello")
                 ]; ?>

<ul id="gallery_img">
    <?php
    $start = 100;
    $end = 200;
    for( $i=$start; $i<=$end; $i++){
        if($i <= 99 && $i >= 10){
            $target = sprintf($targets["Test"]["fake1"], $i);
        }if($i >= 100){
            $target = sprintf($targets["Test"]["fake2"], $i);
        }
        echo "<li><img src=\"$target\" alt=\"$i\" title=\"$i\" /></li>";
    }
    ?>
</ul>

在上面的代码中,我修改了 2 3 12 14 这些行,概述如下:

/* line 02 */ "fake1"=>"http://fakeimg.pl/%d/",
/* line 03 */ "fake2"=>"http://fakeimg.pl/%d/?text=Hello")
/* line 12 */ $target = sprintf($targets["Test"]["fake1"], $i);
/* line 14 */ $target = sprintf($targets["Test"]["fake2"], $i);

顺便说一句,第一个if子句的主体永远不会被执行。很谨慎地检查您的代码。