2014-01-28 4 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

Похоже, есть несколько синтаксических ошибок в том, как объявлен массив $ objects. Попробуйте следующее:

<?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, в качестве шаблонов. Они не будут динамически переоцениваться в вашей петле или практически в другом месте. Вы можете использовать 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> 

В коде выше, я изменил линию , , и , указанную ниже:

/* 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

Смежные вопросы