2

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

我怎样才能在 PHP 中实现这一点?我可以设置一个匹配的计数器2,5,8,11, etc...吗?

4

4 回答 4

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 开始计数。

于 2012-04-10T17:52:27.050 回答
1
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 函数或任何您喜欢的函数。

于 2016-01-29T11:11:37.410 回答
0

$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;
        ...
    }
}
于 2012-04-10T18:00:17.603 回答
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]);
}

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

于 2012-08-30T21:11:23.023 回答