нарезать массив слева от заданной точки

0

У меня есть следующий массив

$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 );

который правильно меняет значения 76 и 528

Однако я не могу получить 2 значения слева, что в данном случае равно 720 и 530. Я не могу заставить смещение работать правильно

Любая идея о том, как получить эти два значения слева, и могу ли я использовать здесь правильную функцию?

Теги:
arrays

3 ответа

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>";
3

Это должно работать:

array_slice($array, $a - 3, 2)
  • 1
    Я был первым Но я поддерживаю низкие повторения :-)
  • 0
    Вы джентльмен!
Показать ещё 1 комментарий
2
$keys = array_slice($array, $a-3, 2);
var_dump($keys);

возвращается

array(2) {
  [0]=>
  string(3) "720"
  [1]=>
  string(3) "530"
}
  • 0
    Это работает, но проблема, скажем, $a равно 2 , он возвращает последнее значение, которое составляет 388

Ещё вопросы

Сообщество Overcoder
Наверх
Меню