问题描述
我尝试使用 next() 函数和 foreach 循环返回当前元素值。我正在 foreach 循环中从数据库中获取数据。
$result = $wpdb->get_results ( "SELECT * FROM interestclass
where SortingCode='bake1r20210113' ||
SortingCode='bake1r20210225' ||
SortingCode='bake1r20210506' ||
SortingCode='bake1r20210612' ||
SortingCode='bake1r20210813'" );
foreach ( $result as $print ) {
$nextRowValue=next(next($result));
echo "<td> working".$nextRowValue->LessonCode."</td><br>";
}
解决方法
$wpdb->get_results
返回一个结果集行数组和一个对数组进行的 foreach 处理,因此 foreach 完成向下移动数组的所有操作,您需要做的就是使用 $row
作为当前行您正在处理
$results = $wpdb->get_results ( "SELECT * FROM interestclass
where SortingCode='bake1r20210113' ||
SortingCode='bake1r20210225' ||
SortingCode='bake1r20210506' ||
SortingCode='bake1r20210612' ||
SortingCode='bake1r20210813'" );
foreach ( $results as $row ) {
echo "<td> working {$row->LessonCode}</td>";
}
根据您在下面的评论添加其他代码。
因此,如果您想针对数组中的下一行测试这一行,只需更改 foreach 的格式即可为您提供数组的 key
。然后,您可以在 $results
数组上使用它来访问数组中的下一个事件。请注意,这样做很容易超出数组的边界,因此首先您需要检查使用简单的 IF 不会发生这种情况
$results = $wpdb->get_results ( "SELECT * FROM interestclass
where SortingCode='bake1r20210113' ||
SortingCode='bake1r20210225' ||
SortingCode='bake1r20210506' ||
SortingCode='bake1r20210612' ||
SortingCode='bake1r20210813'" );
$resultCount = count($results);
foreach ( $results as $key => $row ) {
// first make sure we have a next row
if ( $key < $resultCount ){
$nextRow = $results[$key+1];
if ( $row->LessonCode == $nextRow->LessonCode ) {
echo "<td> working {$row->LessonCode}</td>";
}
}
}
,
如果你跑
foreach ( $result 作为 $print ) {
程序迭代 $result 数组。在每个循环中 $print 是 $result 的一个元素,所以 next 不是必需的。
我认为代码将是:
foreach ( $result 作为 $print ) {
echo "working".$print->LessonCode."
";}
我在你的代码中看到你使用 next(next($result)) 它会在数组中跳转 2 个位置,而不是一个。