我有以下用户名数组:
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 个用户
有谁知道这是如何实现的?
使用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)
您还可以检查范围是否正常