基于数组生成上一个/下一个项目按钮(php)

时间:2011-11-10 05:18:56

标签: php arrays

我想知道是否有人可以根据所有项目的数组帮助我生成上一个/下一个按钮。

这是我的基本数组:

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数组...如果这有意义......?任何帮助将不胜感激!

1 个答案:

答案 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不在数组中,您将最终处于无限循环中。此外,我将添加免责声明,我确信可能有更好的方法来做到这一点,这只是一种方法。