在 php 中使用 foreach 循环获取下一个元素值

get next element value using foreach loop in php

我尝试将 next() 函数与 foreach 循环一起使用 returns 当前元素 value.I 正在 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 returns 一个结果集行数组和一个 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 个位置,而不是一个。