我有一个 PHP 项目数组(WordPress 帖子),我循环创建一个 3x3 的帖子网格。
使用 jQuery,我将 CSS 类应用于中间列项,如下所示:$('#grid li:nth-child(3n+2)').addClass('middle');
我怎样才能在 PHP 中实现这一点?我可以设置一个匹配的计数器2,5,8,11, etc...
吗?
我有一个 PHP 项目数组(WordPress 帖子),我循环创建一个 3x3 的帖子网格。
使用 jQuery,我将 CSS 类应用于中间列项,如下所示:$('#grid li:nth-child(3n+2)').addClass('middle');
我怎样才能在 PHP 中实现这一点?我可以设置一个匹配的计数器2,5,8,11, etc...
吗?
你知道 PHP 中的循环吗?在不了解您在 PHP 代码中究竟想实现什么的情况下,我只能建议如下内容:
$posts = array(); //The whatever thing that contains the posts you are concerned about
for ($i = 1; $i<=count($posts); $i++) {
if($i == /*selector condition*/) {
//do what you do with the targeted posts
} else {
//do what you do with all others
}
}
(见http://www.w3schools.com/php/php_looping_for.asp)
小旁注:您通常会从 $i=0 开始计数,但我假设如果您在谈论帖子,它们可能会从 1 而不是 0 开始计数。
function nthChild($multiplier, $addition, $max)
{
$validInedexes = array();
for ($n = 0; $n < $max; $n++)
{
$idx = $multiplier * $n + $addition;
if ($idx > $max)
{
return $validInedexes;
}
$validInedexes[] = ($idx - 1);
}
}
上述函数将根据输入为您提供有效索引。然后在任何循环中按索引匹配。为此使用 in_array 函数或任何您喜欢的函数。
$my_query = new WP_Query('category_name=special_cat&posts_per_page=10'); ?>
$query = new WP_Query('...');
$posts = ($count = $query->post_count) ? range(1, $count) : array();
foreach (array_chunk($posts, 3) as $row => $rowIndexes)
{
foreach ($rowIndexes as $column => $index)
{
$query->the_post();
$middle = $column === 1;
...
}
}
:nth-child(3n+2)
将会:
$count = count($arr);
for($i = 0, $idx = 0; $idx < $count - 1; $idx = 3 * $i + 2, $i++) {
print_r($arr[$idx]);
}
当然,这只会给你那些特定的项目。如果您想要所有项目并且只在这些元素上运行一段代码,那么我不知道......但是。