获取数组中的前导者和后继者的数量

时间:2017-11-25 09:29:07

标签: php arrays

我有一个对象数组,我想计算给定值的前一个和下一个索引的数量,直到某个最大数量。

Array
(
    [0] => stdClass Object
        (
            [id] => 460
        )

    [1] => stdClass Object
        (
            [id] => 484
        )

    [2] => stdClass Object
        (
            [id] => 485
        )

    [3] => stdClass Object
        (
            [id] => 486
        )

    [4] => stdClass Object
        (
            [id] => 489
        )

    [5] => stdClass Object
        (
            [id] => 501
        )

    [6] => stdClass Object
        (
            [id] => 654
)

案例:最大数量为2

  • 如果值为 460 ,则之前的索引计数为0 (为[0]),下一个索引计数为2 (如[1][2]
  • 如果值为 485 ,则之前的索引计数为2 (为[0][1])且下一个索引计数是2 (作为[3][4]
  • 如果值为 501 ,则之前的索引计数为2 (为[3][4]),并且下一个索引计数是1 (如[6]
  • 如果值 654 ,则之前的索引计数为2 (为[4][5]),下一个索引计数是0 (作为[6]

当给出数组,值和最大计数时,如何获得这两个计数?

1 个答案:

答案 0 :(得分:1)

您似乎想知道元素之前和之后是否有2个元素与您搜索的值,如果没有,有多少元素(0或1)。

以下是您可以使用的功能:

pm2 start gulpfile.js --watch

它将返回两个值(作为数组),即那些prev和next值。如果找不到您要查找的值,则两者都返回-1。

以下是你如何称呼它:

function getPrevNext($arr, $find, $max = 2) {
    foreach($arr as $i => $obj) {
        if ($obj->id == $find) {
            return [min($max, $i), min($max, count($arr) - 1 - $i)];
        }
    }
    return [-1, -1]; // not found
}