2014-01-28 49 views
-1

我只需要創建一個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(),所以我做了什麼?請幫幫我。

回答

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

+0

數組中的$ i怎麼樣?該代碼是關於顯示結果在列表http://fakeimg.pl/100,http://fakeimg.pl/101 .... – user3075620

0

您試圖使用$target數組中包含的字符串作爲模板。他們不會在你的循環或其他任何地方重新評估。上述

<?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> 

在代碼中,我修改了線,,和,概述如下::您可以使用sprintf來實現你的願望,但是

/* 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子句的主體將永遠不會執行。很高興仔細查看您的代碼。

+0

是的,當然,第一,如果沒有意義,但你回答我的問題謝謝 – user3075620