我正试图从我的表中增加一个结果集。
我尝试使用增量显示接下来的三个结果。这工作正常。 例如;
当前= 5。
然后显示接下来的三个:6,7,8
它还可以显示前三个:4,3,2
问题出现在我达到最后几个或最少几个结果时。它目前会停止;
current = 23
下一篇:24,25
我无法想出循环到最后或前几个结果。
E.g。我希望它能做到这一点:
current = 2
显示前三个:1,25,24
AND FOR next:
current = 23:
显示下三个:24,25,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
如果有人对如何提供帮助有任何想法,那就太棒了!
答案 0 :(得分:0)
$next_key = $prev_key = $key;
$max = count($test_array) - 1;
循环可能看起来像这样。
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];
}