【发布时间】:2017-11-24 02:28:16
【问题描述】:
我有一个数组对象,想通过特定的键获得 2 个前一个和 2 个下一个数组组。
Array
(
[467] => stdClass Object
(
[id] => 467
[user_id] => 1
)
[468] => stdClass Object
(
[id] => 468
[user_id] => 1
)
[469] => stdClass Object
(
[id] => 469
[user_id] => 1
)
[474] => stdClass Object
(
[id] => 474
[user_id] => 1
)
[475] => stdClass Object
(
[id] => 475
[user_id] => 1
)
[479] => stdClass Object
(
[id] => 479
[user_id] => 1
)
[480] => stdClass Object
(
[id] => 480
[user_id] => 1
)
)
如果键定义 474 将导致:
- 键 469 和 468 中的上一个数组组
- 键 475 和 479 中的下一个数组组
- 如果没有上一个和下一个数组,我不想要结果
我尝试了这种方法,但不起作用。
$val = 474;
$currentKey = array_search($val, $array);
$before = (isset($array[$currentKey - 2])) ? $array[$currentKey - 2] :
$after = (isset($array[$currentKey + 2])) ? $array[$currentKey + 2] : $array[0];
var_dump($before, $after);
请帮忙。
【问题讨论】:
-
如果没有 2 个可用的元素(在目标元素之前或之后),您希望发生什么?我们要“全天候”吗? “不工作”是因为有错误或提供了不正确的结果?还是没有结果?
-
我不想要结果,
-
请将相关详细信息添加到您的问题中作为编辑。你的意思是你想让整个事情都失败?还是您可以接受 1 个前导元素和 2 个尾随元素?这将确定要调用的正确函数。
-
好的,谢谢,我加
If don't have previous and next array, i want no result