Php 在wordpress foreach循环中,返回当前行id和下一行/上一行id

Php 在wordpress foreach循环中,返回当前行id和下一行/上一行id,php,wordpress,loops,Php,Wordpress,Loops,在wordpress中,我试图获取一行的当前id和下一行的下一个id 示例数据库: ----------------------------- | id | book | orderby | ----------------------------- | 3 | b | 1 | ----------------------------- | 1 | f | 2 |

在wordpress中,我试图获取一行的当前id和下一行的下一个id

示例数据库:

    -----------------------------
    |   id  |   book  | orderby |
    -----------------------------
    |    3  |    b    |     1   |
    -----------------------------
    |    1  |    f    |     2   |
    -----------------------------
    |    2  |    g    |     3   |
    -----------------------------
代码:


我认为在任何Wordpress方式下,你们都会增加或减少循环中的数组键。这是一个非常简单的修复方法。

您可以使用以下方法:

<?php

$entries = $wpdb->get_results("SELECT * FROM ".$wpdb->prefix."_books ORDER BY orderby ASC");
$entries = array_values($entries); //shouldn't be needed, but used just in case wordpress returns a non-incrementing key structure for whatever reason

foreach ($entries as $k=>$v) {
    if (isset($entries[$k - 1])) {
        $prev = $entries[$k - 1]->id;
    }
    else {
        $prev = null;
    }

    $current = $v->id;

    if (isset($entries[$k + 1])) {
        $next = $entries[$k + 1]->id;
    }
    else {
        $next = null;
    }
}

?>

var\u dump($entries)
-我猜你有一个数组?是的,它是数组。这就是为什么你要使用
$wpdb->get\u results
而不是
WP\u Query
甚至
get\u posts
?我已经了解到,如果你想对自定义数据库表进行查询,你可以对所有行和get\u行使用get\u results()对于单行,我一直在使用这些方法。+1-这几乎正是我想要实现的,但你在这方面击败了我。下次可能会打慢一点;)干得好
<?php

$entries = $wpdb->get_results("SELECT * FROM ".$wpdb->prefix."_books ORDER BY orderby ASC");
$entries = array_values($entries); //shouldn't be needed, but used just in case wordpress returns a non-incrementing key structure for whatever reason

foreach ($entries as $k=>$v) {
    if (isset($entries[$k - 1])) {
        $prev = $entries[$k - 1]->id;
    }
    else {
        $prev = null;
    }

    $current = $v->id;

    if (isset($entries[$k + 1])) {
        $next = $entries[$k + 1]->id;
    }
    else {
        $next = null;
    }
}

?>