所以我希望php命名div,无论B的值是什么。示例:如果b = 1,我希望div id为“imgDiv-1”。代码生成3个div,每个div必须有不同的名称。但是,此代码使每个div id为“imgDiv-3” 代码:
<?php
for ($b=3; $b > 4; $b++) {
define('RANDOM_IMAGES_COUNT2',3);
define('RANDOM_IMAGES_FORMAT2', '<div id="imgDiv-' .$b. '"style="width:170px; height:auto;float:left;text-align:center;top"><img src="%s" style="border-style:solid;border-width:2px;border-color:black;"/><a href="%s" alt="%s" title2="%s">%s</a></div>');
}
#------------------------------------------------------------------------------
$images = array (
array ( 'title2' => 'Test 2', 'src2' => 'pic2.jpg', 'href2' => 'http://mylink.com /path/','text2' => 'Hello' ),
array ( 'title2' => 'Test 2', 'src2' => 'pic7.jpg', 'href2' => 'http://mylink.com/path/','text2' => 'Hello2' ),
array ( 'title2' => 'Test 2', 'src2' => 'pic9.jpg', 'href2' => 'http://mylink.com/path/','text2' => 'Hello2' ),
array ( 'title2' => 'Test 2', 'src2' => 'pic5.jpg', 'href2' => 'http://mylink.com/path/','text2' => 'Hello2' ),
array ( 'title2' => 'Test 2', 'src2' => 'pic3.jpg', 'href2' => 'http://mylink.com/path/','text2' => 'Hello3' )
);
#------------------------------------------------------------------------------
if ( count($images) < RANDOM_IMAGES_COUNT2 ) {
trigger_error('Not enough images given', E_USER_WARNING);
exit;
}
#------------------------------------------------------------------------------
for ($i = 0; $i < RANDOM_IMAGES_COUNT2; $i++) {
shuffle($images);
$tmp = array_shift($images);
printf( RANDOM_IMAGES_FORMAT2, $tmp['src2'], $tmp['href2'], $tmp['title2'], $tmp['title2'],$tmp['text2'] ); }
?>
答案 0 :(得分:3)
您的代码有多个问题。
首先,你的循环永远不会运行。您将$b
初始化为3并让它在$b > 4
时运行,但情况绝对不是这样。你可能想要这个:for ($b=1; $b < 4; $b++)
其次,您需要了解define()
的作用。它定义了常量,无法更改。因此,在循环中设置它是一个禁忌。
也许这就是你想要的?
define('RANDOM_IMAGES_COUNT', 3);
define('RANDOM_IMAGES_FORMAT', '
<div id="imgDiv-%s" style="width:170px; height:auto; float:left; text-align:center;">
<img src="%s" style="border-style:solid; border-width:2px; border-color:black;" />
<a href="%s" alt="%s" title2="%s">%s</a>
</div>
');
$images = array (
array ( 'title2' => 'Test 2', 'src2' => 'pic2.jpg', 'href2' => 'http://mylink.com /path/','text2' => 'Hello' ),
array ( 'title2' => 'Test 2', 'src2' => 'pic7.jpg', 'href2' => 'http://mylink.com/path/','text2' => 'Hello2' ),
array ( 'title2' => 'Test 2', 'src2' => 'pic9.jpg', 'href2' => 'http://mylink.com/path/','text2' => 'Hello2' ),
array ( 'title2' => 'Test 2', 'src2' => 'pic5.jpg', 'href2' => 'http://mylink.com/path/','text2' => 'Hello2' ),
array ( 'title2' => 'Test 2', 'src2' => 'pic3.jpg', 'href2' => 'http://mylink.com/path/','text2' => 'Hello3' )
);
if (count($images) < RANDOM_IMAGES_COUNT) {
trigger_error('Not enough images given', E_USER_WARNING);
exit;
}
shuffle($images);
for ($i=1; $i<=RANDOM_IMAGES_COUNT; $i++) {
printf(
RANDOM_IMAGES_FORMAT,
$i,
$images[$i]['src2'],
$images[$i]['href2'],
$images[$i]['title2'],
$images[$i]['title2'],
$images[$i]['text2']
);
}
答案 1 :(得分:1)
由于您开始使用$b=3
并且循环只能在$b
小于4时运行(所以当$b
为3时...就是这样)然后你的循环毫无意义。 $b
永远不能等于1。
也许你想这样做:for ($b=1; $b < 4; $b++) {
。
这意味着$b
首先为1,然后再将代码运行为2,然后再运行3,然后将完成。
答案 2 :(得分:1)
总而言之,从所有评论中你应该改变for循环以匹配
for($b = 1; $b < 4; b++)
{
}
这将使
imgDiv-1, imgDiv-2, imgDiv-3
如果您有任何问题使用DEFINE()
http://php.net/manual/en/function.define.php
是一个很好的资源
答案 3 :(得分:0)
更改for循环
写
for ($b=1; $b < 4; $b++) {
define('RANDOM_IMAGES_COUNT2',3);
define('RANDOM_IMAGES_FORMAT2', '<div id="imgDiv-' .$b. '"style="width:170px; height:auto;float:left;text-align:center;top"><img src="%s" style="border-style:solid;border-width:2px;border-color:black;"/><a href="%s" alt="%s" title2="%s">%s</a></div>');
}
而不是
for ($b=3; $b > 4; $b++) {
define('RANDOM_IMAGES_COUNT2',3);
define('RANDOM_IMAGES_FORMAT2', '<div id="imgDiv-' .$b. '"style="width:170px; height:auto;float:left;text-align:center;top"><img src="%s" style="border-style:solid;border-width:2px;border-color:black;"/><a href="%s" alt="%s" title2="%s">%s</a></div>');
}