帮助foreach循环PHP

时间:2010-10-09 00:14:12

标签: php foreach conditional

目前正在制作一个允许多个图像滑块的Wordpress插件。目前,为了确保代码有效,我必须将每个滑块动态样式加载到标记中。这很好,但它加载了所有滑块的样式,如果用户使用许多图像滑块,它可以真正开始向页面源添加大量代码。

因此,如果滑块实际显示在页面上,我试图将样式添加到标签中。这可能吗?这就是我目前正在展示样式的方式:

function test() {
global $wpdb;
$table_name = $wpdb->prefix . "premiumslider";
$number = $wpdb->get_results("SELECT * FROM $table_name");
foreach ($number as $slider) { ?> 
<style type="text/css"><?php if($slider->paginationstyle == 'icons') { ?>
#lofslidecontent<?php echo $slider->id; ?> .lof-navigator li{<?php if($slider-        >paginationstyle=='icons'){ ?>background: url(<?php if($slider->paginationoff=='') echo WP_PLUGIN_URL.'/premium-slider/images/pagination.png'; if($slider->paginationoff!='') echo $slider->paginationoff; ?>) 0 0 no-repeat;<?php } ?>} 
#lofslidecontent<?php echo $slider->id; ?> .lof-navigator li.active{<?php if($slider->paginationstyle=='icons'){ ?>background: url(<?php if($slider->paginationon=='') echo WP_PLUGIN_URL.'/premium-slider/images/pagination_current.png'; if($slider->paginationon!='') echo $slider->paginationon; ?>) 0 0 no-repeat;<?php } ?>}
 <?php } ?>
 <?php if($slider->paginationstyle == 'images') { ?>
 #lofslidecontent<?php echo $slider->id; ?> .lof-navigator { margin-top: 50px; }
 #lofslidecontent<?php echo $slider->id; ?> .lof-navigator li img { border: <?php echo    $slider->imgborder; ?>px solid #<?php echo $slider->imgcolour; ?>; }
 #lofslidecontent<?php echo $slider->id; ?> .lof-navigator li.active img { border: <?php    echo $slider->imgborder; ?>px solid #<?php echo $slider->imghover; ?>; }
 #lofslidecontent<?php echo $slider->id; ?> .lof-navigator li.active img:hover { border: <?php echo $slider->imgborder; ?>px solid #<?php echo $slider->imghover; ?>; }
  <?php } ?></style><?php
 }
}

我怎样才能做到这一点?

要显示上面的代码我使用:

add_action('wp_head','test');

并显示滑块($ id是该特定滑块的ID; 1,2,3等):

premium_slider($id);

2 个答案:

答案 0 :(得分:0)

这是一个复杂的问题。首先,我贬低你使用全局变量,尤其是数据库资源。我也不清楚为什么你需要以这种方式直接回应样式。

现在帮助你:

我能看到的真正解决这个问题的唯一方法就是将所有样式存储在某个地方,例如DB,配置文件或每种样式的任何此类事物。你必须事先知道这些样式,因为你在这里很难编码。因此,只需循环浏览,如果滑块的ID与其样式匹配,则打印样式。如果你将一个大数组中的所有样式存储在另一个带有滑块ID的php文件中,这很简单。

答案 1 :(得分:0)

如何确定页面上显示哪些滑块?实际上,您需要将查询更改为与实际加载滑块的查询相同,这样只会加载CSS以显示相同的滑块。

$table_name = $wpdb->prefix . "premiumslider";
$number = $wpdb->get_results("SELECT * FROM $table_name WHERE category = 'cars'");

这只会将元素加载到该特定页面上显示的foreach数组中。