在给定点的左侧切一个数组

时间:2015-01-05 18:13:24

标签: php arrays

我有以下数组

$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。我无法使偏移正常工作

关于如何在左侧获取这两个值的任何想法,我甚至在这里使用正确的函数?

3 个答案:

答案 0 :(得分:3)

这应该有效:

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

答案 1 :(得分:2)

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

returns

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

答案 2 :(得分:0)

我最终做了以下工作,完全符合我的需求

  • 使用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>";