PHP中更有效的算法

时间:2013-11-24 10:08:28

标签: php wordpress algorithm

我在数据库中有12个图像链接,我可以使用get_field('opt3_img_N')调用,其中N可以是1到12之间的任何数字。 (我正在为任何熟悉的人使用wordpress)。

我遇到的问题是想出一种以我想要的方式输出图像的有效方法。

我需要将链接平均分配到3个div中。理想情况下,我希望图像1位于div 1中,图像2位于div 2中,图像3位于div 3中,图像4位于div 1中,等等。

但是,我不能为我的生活,弄清楚。我知道这可能已经在很多方面完成了,但我在网上找不到任何东西。

我现在拥有的是:

<div class="div-1">
<?php for( $i = 1; $i <= 4; $i++ ) { 
    $img = get_field( "opt3_img_$i" ) ?: get_template_directory_uri() . "/images/default.jpg"; 
    $url = get_field( "opt3_url_$i" ) ?: "#"; ?>
     <a href="<?php echo $url ?>"><img src="<?php echo $img ?>" /></a>
<?php endfor ?>
</div>
使用div 2和3等等。基本上它是一种蛮力的方式。这样做现在,但我想知道是否有更好的方法来做到这一点。

PS。我不确定这是否是一个很好的问题,所以如果需要请投票给我。

谢谢。

3 个答案:

答案 0 :(得分:1)

有很多种方法可以构建HTML。这个在打印之前构建DIV块...

$myDivs = array();
$divNo = 4;  // set to the number of div blocks you want to split between
$imgCount = 12; // set to number of images.

for( $i = 1; $i <= $imgCount; $i++ ) { 
    $img = get_field( "opt3_img_$i" ) ?: get_template_directory_uri() . "/images/default.jpg"; 
    $url = get_field( "opt3_url_$i" ) ?: "#";
    // use modulo operator to decide which div to print in....
    $idx = ($i - 1) % ($divNo-1);
    // I like heredocs...
    $myDivs[ $idx][] = <<<EOF
<a href="$url"><img src="{$img}" /></a>
EOF;
}
// print the divs one after the other....
$j = 1;
foreach ($myDivs as $div) {
    $text = join("\n", $div);
    echo "<div class='div-{$j}'>{$text}</div>\n";
    $j++;
}

答案 1 :(得分:0)

有很多方法可以做到这一点,我不确定你的蛮力是什么意思,但这不是蛮力,它只是一个循环。

你在这里有一个循环,你需要开始思考的是光标。

//PSEUDO CODE
$div_pointer = 1;
for($i = 0; $i < 12; $i++) {
    <div class=$div_pointer>
    $div_pointer++;
    if($div_pointer > 3) $div_pointer = 1;
}

这基本上是一个伪示例,使用变量来跟踪您要将图像写入哪个div。 $i变量迭代主数据集,而光标跟踪要写入的3个div中的哪一个。一旦它到达第四个fiv,它就会重新开始。作为一种解决问题的新方式,可能会有所帮助。

话虽如此,有更好的方法将图像转换为div:P

答案 2 :(得分:0)

你可以做一次:

<?php
    $dir=get_template_directory_uri(); // Get template dir
    for($i=1;$i < 4;++$i){
     echo '<div class="div-'.$i.'">';
     $img = get_field( "opt3_img_$i" ) ? : $dir . "/images/default.jpg";
     $url = get_field( "opt3_url_$i" ) ? : "#";
     echo '<a href="'.$url.'"><img src="'.$img.'" /></a>';
     echo'</div>';
    }
?>

快乐编码