我有一个数组,我想获得下一个值。
$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语句中使用它。
如果当前值是最后一个值(G 101),我还希望它回到第一个值(H 101)。
答案 0 :(得分: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; ?>
答案 1 :(得分: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()
)
答案 2 :(得分:1)
在操作上,您可以以这种方式检索当前值的索引
$key = array_search($currValue, $sorting);
然后你应该myNewValue = $sorting[($key+1)%8]
或者你不知道数组的大小,你必须myNewValue = $sorting[($key+1)%(count($sorting)+1)]
答案 3 :(得分: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];