我想知道是否有人可以根据所有项目的数组帮助我生成上一个/下一个按钮。
这是我的基本数组:
Array
(
[0] => stdClass Object
(
[id] => 1
[name] => ITEM 1
)
[1] => stdClass Object
(
[id] => 5
[name] => ITEM 2
)
[2] => stdClass Object
(
[id] => 6
[name] => ITEM 3
)
[3] => stdClass Object
(
[id] => 7
[name] => ITEM 4
)
)
我要做的是:
观看:项目1 上一个按钮:项目4 下一个按钮:项目2
观看:项目2 上一个按钮:项目1 下一个按钮:第3项
观看:项目3 上一个按钮:项目2 下一个按钮:第4项
等
我想我真的试图根据我正在查看的项目将原始数组转换为另一个prev / next数组...如果这有意义......?任何帮助将不胜感激!
答案 0 :(得分:1)
有很多方法可以做到这一点,但您可以使用array_shift
/ array_push
来循环遍历各种事物。这不会使用您提到的确切数组,但它应该让您接近解决方案。
<?php
function next_and_prev($current, $a) {
while (true) {
/* Test for item at 2nd position in the array, so if we hit a match,
we can just grab the first and third items as our prev/next results.
Since we are mutating the array on each iteration of the loop, the
value of $a[1] will change each time */
if ($current == $a[1]) {
print "Prev: " . $a[0] . "\n";
print "Next: " . $a[2] . "\n";
return;
}
array_push($a, array_shift($a));
}
}
print "with current of 1\n";
next_and_prev(1, array(1, 2, 3));
print "with current of 2\n";
next_and_prev(2, array(1, 2, 3));
打印:
with current of 1
Prev: 3
Next: 2
with current of 2
Prev: 1
Next: 3
请记住,这不进行成员资格测试,因此如果$ current不在数组中,您将最终处于无限循环中。此外,我将添加免责声明,我确信可能有更好的方法来做到这一点,这只是一种方法。