Php 通过MYSQL结果集递增而不停止
我试图通过表中的结果集递增 我尝试使用增量显示接下来的三个结果。这很好用。 比如, 电流=5 然后显示下三个:6、7、8 它还可以显示前三个:4、3、2 当我达到最后两个或最少两个结果时,问题就出现了。它目前将停止 电流=23 下一个:24,25 我不知道如何循环到最后或最初的几个结果 例如,我想让它这样做: 电流=2 显示前三个:1、25、24 下一步: 电流=23: 显示下三个:24、25、1 我将这些作为数组返回。代码:Php 通过MYSQL结果集递增而不停止,php,mysql,Php,Mysql,我试图通过表中的结果集递增 我尝试使用增量显示接下来的三个结果。这很好用。 比如, 电流=5 然后显示下三个:6、7、8 它还可以显示前三个:4、3、2 当我达到最后两个或最少两个结果时,问题就出现了。它目前将停止 电流=23 下一个:24,25 我不知道如何循环到最后或最初的几个结果 例如,我想让它这样做: 电流=2 显示前三个:1、25、24 下一步: 电流=23: 显示下三个:24、25、1 我将这些作为数组返回。代码: $test_array = array(); $no = 1;
$test_array = array();
$no = 1;
while($results=mysql_fetch_assoc($test_query))
{
$test_array[] = array('test_id' => $results['id'],
'path' => $results['Path'],
'type' => $results['FileType']
'no' => $no);
$no++;
}
$current_no = 0;
if(is_array($test_array) && count($test_array)>0)
{
foreach($test_array as $key=>$array)
{
if($array['test_id']==intval($db_res['current_id']))
{
$current[] = $array;
$current_no = intval($key+1);
}
else
//error
if(intval($current_no)>0)
{
//Next 3
for($i=0;$i<3;$i++)
{
if(isset($test_array[intval($current_no+$i)]) && is_array($test_array[intval($current_no+$i)]))
{
$next[] = $test_array[intval($current_no+$i)];
}
else
break;
}
//Previous 3
for($i=2;$i<5;$i++)
{
if(isset($test_array[intval($current_no-$i)]) && is_array($test_array[intval($current_no-$i)]))
{
$previous[] = $test_array[intval($current_no-$i)];
}
else
break;
}
break;
}
else
//error
}
}
else
//error
如果有人对如何帮助有任何想法,那就太好了
为$current查找$key并设置$next\u key=$prev\u key=$key;
查找最后一个键$max=count$test\u数组-1;
增加$next_键并减少$prev_键3次,然后检查
到达边界:
循环可能是这样的
for ($i = 1; $i <= 3; $i++)
{
$next_key = ($next_key == $max) ? 0 : $next_key + 1;
$prev_key = ($prev_key == 0) ? $max : $prev_key - 1;
$next[] = $test_array[$next_key];
$prev[] = $test_array[$prev_key];
}
你能把你已有的密码给我看看吗?对我们来说,修改您现有的代码比猜测您拥有的代码并将其重新编写成不同的代码要容易得多。所以您只想创建一个无休止的结果导航循环?在current=2的第三个示例中,您真的希望前三个是24、25、1吗?我认为,如果这是用于导航/分页,那么结果会很混乱。另外,如果你的结果只返回2页会发生什么?你是否希望它实际列出上一页:1,2,1当前页:2下一页:1,2,1,因为这就是循环的方式。我添加了代码。很好的答案,如果少于7个数字,有没有办法避免重复?我想我会将循环限制为一次,然后重复少于3项,但是可以忍受。