如何让PHP命名这个div?

时间:2013-09-06 19:37:08

标签: php css html

所以我希望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 个答案:

答案 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>');
}