获取某个值之前/之后的数组值

ada*_*amb 3 php arrays

我有以下用户名数组:

Array
(
[0] => Sarah
[1] => Leon
[2] => Gary
[3] => Nathan
[4] => Adam
[5] => Lee
[6] => Alex
[7] => Andy
[8] => Terry
)
Run Code Online (Sandbox Code Playgroud)

我想获取特定名称之后的 3 个用户以及特定名称之前的 3 个用户。例如,名称“Adam”之后的 3 个用户和名称“Adam”之前的 3 个用户

有谁知道这是如何实现的?

Rob*_*ert 5

使用array_slice()array_search()

<?php

$names = [
'Sarah',
'Leon',
'Gary',
'Nathan',
'Adam',
'Lee',
'Alex',
'Andy',
'Terry',
];

$name = "Adam"; //name to be searched
$foundIndex = array_search($name, $names);

if (false !== $foundIndex) {
   $beforeNames = array_slice($names, $foundIndex -3 , 3);
   $afterNames = array_slice($names, $foundIndex + 1, 3);

   var_dump($beforeNames,$afterNames);
} else {
  // not found 
}
Run Code Online (Sandbox Code Playgroud)

您还可以检查范围是否正常