首页 > 解决方案 > 获取数组中键周围的数字

问题描述

假设我有一个如下所示的数组

   [0] => 25
    [1] => 30
    [2] => 35
    [3] => 40
    [4] => 45
    [5] => 50
    [6] => 55
    [7] => 60
    [8] => 65
    [9] => 70

如果我将密钥输入为 4 ,我需要获取最近的 2 个数组,例如

[2] => 35
[3] => 40
[4] => 45
[5] => 50
[6] => 55

现在我使用类似下面的东西。

$key = 4;
$count = 2;
$slice = array_slice($array,$key-$count,4+($count-1));

但是如果我的 $key 是 1 并且 count 是 2,我需要类似的东西

    [0] => 25
    [1] => 30
    [2] => 35
    [3] => 40

如果 key 是 8 我需要

  [6] => 55
    [7] => 60
    [8] => 65
    [9] => 70

我无法实现上面的这个切片代码,所以有人指导一下其他方式,谢谢。

标签: php

解决方案


下面的代码满足您的测试用例

$array = array(
    '0' => 25,
    '1' => 30,
    '2' => 35,
    '3' => 40,
    '4' => 45,
    '5' => 50,
    '6' => 55,
    '7' => 60,
    '8' => 65,
    '9' => 70,
);

$key = 8;
$count = 2;

$slice = array_slice(
    $array, 
    ( ( $key - $count ) > 0 ) ? ( $key - $count) : 0  , 
    ( ( $key - $count ) > 0 ) ? ( (2 * $count) + 1 ) :  ( (2 * $count) + ( $key - $count + 1 )  )
);

这是在线演示


推荐阅读