使用PHP“prev”和“next”来移动数组

时间:2015-04-22 15:35:23

标签: php arrays cursor

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

但是,移动到先前(“上一步”)记录(朝向数组顶部)的功能无法正常工作。我怀疑这可能与使用“ 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];
    } 

1 个答案:

答案 0 :(得分: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或者大于可用行数,则代码将无效。因此,我提供的代码也是如此。

相关问题