Php 获取数组中前导和后继的数量
我有一个对象数组,我想从给定的值计算上一个和下一个索引的数量,直到某个最大值Php 获取数组中前导和后继的数量,php,arrays,Php,Arrays,我有一个对象数组,我想从给定的值计算上一个和下一个索引的数量,直到某个最大值 Array ( [0] => stdClass Object ( [id] => 460 ) [1] => stdClass Object ( [id] => 484 ) [2] => stdClass Object (
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(如
),下一个索引计数为2(如[0]
和[1]
)[2]
- 如果值为485,则上一个索引计数为2(如
和[0]
),下一个索引计数为2(如[1]
和[3]
)[4]
- 如果值为501,则上一个索引计数为2(如
和[3]
),下一个索引计数为1(如[4]
)[6]
- 如果值为654,则上一个索引计数为2(如
和[4]
),下一个索引计数为0(如[5]
)[6]
当给定一个数组、一个值和一个最大计数时,如何获得这两个计数?您似乎想知道在搜索值的元素前后是否有2个元素,如果没有,有多少个元素(0或1) 以下是您可以使用的函数: 它将返回两个值(作为一个数组),即上一个值和下一个值。如果找不到您要查找的值,则返回-1 你可以这样称呼它:
$arr = [
(object) ["id" => 460],
(object) ["id" => 484],
(object) ["id" => 485],
(object) ["id" => 486],
(object) ["id" => 489],
(object) ["id" => 501],
(object) ["id" => 654],
];
list($prev, $next) = getPrevNext($arr, 484, 2);
echo "prev: $prev, next: $next"; // prev: 1, next: 2
请更清楚地说明你想做什么。我不明白你想实现什么,也不明白“上一个”和“下一个”是如何计算的。Sory@Ali,我不知道如何编写代码来尝试它。获取你要查找的条目的数组索引。这个减1是之前的条目数。如果小于0,则将其等于0。下一个从数组长度开始的逻辑相同。如果要获取3个元素,请更改此值?对吧?<代码>返回[min(2,$i),min(2,count($arr)-1-$i]代码>到
返回[min(3,$i),min(3,计数($arr)-1-$i]代码>更新了答案以接受该数字作为额外参数。
$arr = [
(object) ["id" => 460],
(object) ["id" => 484],
(object) ["id" => 485],
(object) ["id" => 486],
(object) ["id" => 489],
(object) ["id" => 501],
(object) ["id" => 654],
];
list($prev, $next) = getPrevNext($arr, 484, 2);
echo "prev: $prev, next: $next"; // prev: 1, next: 2