PHP相当于nth-child

时间:2012-04-10 17:44:52

标签: php wordpress css-selectors

我有一个PHP数组项目(WordPress帖子),我循环创建一个3x3网格的帖子。
使用jQuery,我将CSS类应用于中间列项,如下所示:
$('#grid li:nth-child(3n+2)').addClass('middle');

我如何在PHP中实现这一目标?我可以设置一个与2,5,8,11, etc...匹配的计数器吗?

4 个答案:

答案 0 :(得分:1)

你知道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。

答案 1 :(得分:0)

$ my_query = new WP_Query('category_name = special_cat&amp; posts_per_page = 10'); ?&GT;

$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;
        ...
    }
}

答案 2 :(得分:0)

:nth-child(3n+2)将是:

$count = count($arr);
for($i = 0, $idx = 0; $idx < $count - 1; $idx = 3 * $i + 2, $i++) {
    print_r($arr[$idx]);
}

当然,这只会给你那些特定的物品。如果您想要所有项目并且只在这些元素上运行一段代码,那么我还不知道....

答案 3 :(得分: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函数来表达你喜欢的内容。