我在数据库中有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。我不确定这是否是一个很好的问题,所以如果需要请投票给我。
谢谢。
答案 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>';
}
?>
快乐编码