Я пытаюсь увеличить набор результатов из моей таблицы.
Я пытаюсь отобразить следующие три результата, используя приращение. Это нормально работает. Например;
ток = 5.
Затем он отображает следующие три: 6,7,8
Он также может отображать предыдущие три: 4,3,2
Проблема возникает, когда я достигаю последней пары или минимальной пары результатов. В настоящее время он остановится;
ток = 23
следующий: 24, 25
Я не могу понять, как пройти до последних или первых нескольких результатов.
Например. Я хочу, чтобы это было так:
ток = 2
отобразить предыдущие три: 1, 25, 24
И ДЛЯ следующего:
ток = 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
Если у кого-то есть идеи, как помочь, было бы здорово!
1 ответ
- Найдите $ key для $ current и установите
$next_key = $prev_key = $key;
- Найти последний ключ
$max = count($test_array) - 1;
- Увеличьте $ next_key и уменьшите $ prev_key в 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];
}
Похожие вопросы
Новые вопросы
php
PHP — это открытый, мультипарадигмальный, динамически типизированный и интерпретируемый язык сценариев, изначально разработанный для веб-разработки на стороне сервера. Используйте этот тег для вопросов о программировании на языке PHP.
24, 25, 1
?previous: 1, 2, 1
current: 2
Next: 1, 2, 1
, потому что именно так это будет зацикливаться.