0

所以我希望 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'] );    }
?>
4

4 回答 4

3

您的代码有多个问题。

首先,您的循环永远不会运行。您初始化$b为 3 并让它运行 while $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']
    );
}
于 2013-09-06T19:40:38.593 回答
1

由于您必须$b=3开始并且循环只能在$b小于 4 时运行(所以当$b是 3 ......它是)那么您的循环是毫无意义的。$b永远不能等于 1。

也许你想这样做:for ($b=1; $b < 4; $b++) {.

这意味着$b首先将是1,然后再次运行代码为2,然后是3,然后将完成。

于 2013-09-06T19:41:35.487 回答
1

总而言之,从所有评论中,您可能应该更改 for 循环以匹配

for($b = 1; $b < 4; b++)
{
}

这将使

imgDiv-1, imgDiv-2, imgDiv-3

如果您对使用 DEFINE() 有任何疑问

http://php.net/manual/en/function.define.php

是个好资源

于 2013-09-06T19:45:06.227 回答
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>');
}
于 2013-09-06T19:47:56.987 回答