使用 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 或大于可用行数,您的代码将不起作用,因此我提供的代码也是如此。
我有两个 "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 或大于可用行数,您的代码将不起作用,因此我提供的代码也是如此。