在给定点的左侧对数组进行切片

slice an array on left of a given point

我有以下数组

$array = array (
  0 => '730',
  1 => '724',
  2 => '720',
  3 => '530',
  4 => '56',
  5 => '76',
  6 => '528',
  7 => '394',
  8 => '390',
  9 => '388',
)

我在数组中有一个给定点,比如 $a = 5,它转换为值 56

现在,我需要获取给定点两侧的两个值。对于$a右边的值,我用下面的

    $keys = array_slice( $array, $a, $x_from_current );

这给了我正确的值 76528

但是我无法获得左侧的 2 个值,在本例中为 720530。我无法使偏移量正常工作

知道如何在左侧获取这两个值吗?我在这里使用的函数是否正确?

$keys = array_slice($array, $a-3, 2);
var_dump($keys);

returns

array(2) {
  [0]=>
  string(3) "720"
  [1]=>
  string(3) "530"
}

这应该有效:

array_slice($array, $a - 3, 2)

我最终完成了以下操作,这完全符合我的需要

  • array_reverse反转数组

  • 接下来重新计算$a

  • 的新位置
  • 正常使用array_slice

这里是结束代码:

$array = array (
  0 => '730',
  1 => '724',
  2 => '720',
  3 => '530',
  4 => '56',
  5 => '76',
  6 => '528',
  7 => '394',
  8 => '390',
  9 => '388',
);

$a = 5;
$reverse_position   = count( $array ) - ( $a );
$array_reverse      = array_reverse( $array );
$sliced_reverse     = array_slice( $array_reverse, $reverse_position + 1, 2 );

echo "<pre>";
var_dump($sliced_reverse);
echo "</pre>";