我只是创建一个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 :(得分: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
子句的主体永远不会被执行。很谨慎地检查您的代码。