2012-03-21 2 views
0

У меня есть массив, где я хочу получить следующее значение.получить следующее значение в php-массиве

$sorting = array(0 => "H 101", 1 => "S 101", 2 => "R 172", 3 => "D 141", 4 => "T 101", 5 => "K 101", 6 => "A 182", 7 => "G 101"); 

У меня есть текущее значение, взятое из инструкции SELECT. Я попробовал array_search, но я не могу заставить его делать то, что хочу.

Скажем, мое текущее значение S 101, как я могу заставить его дать мне «R 172» в качестве следующего значения, которое затем я могу использовать в новой инструкции SELECT.

И еще я хочу, чтобы оно возвращалось к первому значению (H 101), если текущее значение является последним (G 101).

ответ

4

Почему вы явно указали индексы? Это было бы так же, если бы вы этого не сделали.

Насколько я понимаю, array_search был бы подходящим для вас.

$current = 'S 101'; 
$nextkey = array_search($current, $sorting) + 1; 
if($nextkey == count($sorting)) { 
    // reached end of array, reset 
    $nextkey = 0; 
} 

$next = $sorting[$nextkey]; 

ОДНАКО, если я правильно вас понимаю, вы перебираете этот массив и делаете на него запросы. Как насчет публикации того, что вы хотите с точки зрения результата запроса, поскольку может быть лучшее решение (например, MySQL IN())

+0

Это именно то, что я хочу достичь! Большое спасибо. Я хочу просто создать следующую ссылку на странице отображения продукта. Чтобы перейти к следующему элементу. –

+0

А я вижу, ну, что ты здесь сделал, это в лучшем случае. :) – deed02392

+0

Я только что положил его в производственную среду, и он работает безупречно, так что спасибо вам большое :) –

0

Предполагая, что вы знаете, что не собираетесь покидать конец вашего массива и что ваш вход существует:

$sorting = array(0 => "H 101", 1 => "S 101", 2 => "R 172", 3 => "D 141", 4 => "T 101", 5 => "K 101", 6 => "A 182", 7 => "G 101"); 

$key = array_search("H 101", $sorting); 
$returnValue = $sorting[$key + 1]; 
1

Оперативно можно retrive индекс текущего значения таким образом

$key = array_search($currValue, $sorting);

Тогда вы должны сделать myNewValue = $sorting[($key+1)%8] или если вы не знаете размер массива, йо u необходимо сделать myNewValue = $sorting[($key+1)%(count($sorting)+1)]

6

next() и prev() обрабатывают внутренний указатель массива во время обработки вашего скрипта.

$current_index = array_search($current_id, $array); 

// Find the index of the next/prev items 
$next = $current_index + 1; 
$prev = $current_index - 1; 

Ваш HTML:

<?php if ($prev > 0): ?> 
    <a href="<?= $array[$prev] ?>">Previous</a> 
<?php endif; ?> 

<?php if ($next < count($array)): ?> 
    <a href="<?= $array[$next] ?>">Next</a> 
<?php endif; ?> 
Смежные вопросы