Php 在wordpress foreach循环中,返回当前行id和下一行/上一行id
在wordpress中,我试图获取一行的当前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 |
-----------------------------
| 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;
}
}
?>