使用 PHP "prev" 和 "next" 在数组中移动

Using PHP "prev" and "next" to Move Through an Array

我有两个 "buttons" 将数组光标移动到下一条记录或前一条记录。使用“next”移动到下一个(较旧的)记录的功能可以正常工作。

但是,移动到前一个 ("prev") 记录(朝向数组顶部)的功能无法正常工作。我怀疑这可能与使用“mysqli_data_seek”有关。我相信它会将光标设置到当前位置,然后回溯到上一条记录。相反,光标继续向前移动,就好像使用“next”而不是“prev”一样。如何回溯到之前的记录?

function return_next_issue()
    {
    // Newer Issue  - Moves up towards the top of the array.
    // mysqli_data_seek($_SESSION['result'], 0);
    while($row=mysqli_fetch_array($_SESSION['result'], MYSQL_NUM))
            {
                if($_SESSION['issuenum'] == $row[0]) 
                    {                                                       
                        break;
                    }   
            }   
    prev($_SESSION['result']);
    $row=mysqli_fetch_row($_SESSION['result']); 
    return $row[0];
    } 

由于 mysqli_result 对象在会话中并被共享,您可能希望将内部指针初始化为 0 以确保您知道您将从头开始寻找。您还可以创建一个在迭代过程中递增的变量,以确定您需要的索引并寻找前一个索引。

function return_next_issue()
{
   // Newer Issue  - Moves up towards the top of the array.
   $i = 0;
   mysqli_data_seek($_SESSION['result'], 0);
   while($row=mysqli_fetch_array($_SESSION['result'], MYSQL_NUM))
   {
      if($_SESSION['issuenum'] == $row[0]) 
      {                                                       
         break;
      }   
      $i++;

   }   
   mysqli_data_seek($_SESSION['result'], $i - 1);
   $row=mysqli_fetch_row($_SESSION['result']); 
   return $row[0];
}

请注意,如果 $_SESSION['issuenum'] 为 0 或大于可用行数,您的代码将不起作用,因此我提供的代码也是如此。