获取数组中特定值之前和之后的键(PHP中)

yqkkidmi  于 2023-10-15  发布在  PHP
关注(0)|答案(3)|浏览(141)

我想得到值beforeafter一个PHP数组的特定值。
例如,我有:

$array = (441, 212, 314, 406);

我的$specific_value441
在这个例子中,我应该得到before(406)和after(212)。
如果我的值是212,我应该得到之前(441)和之后(314)。

wkftcu5l

wkftcu5l1#

对于递归键,搜索后可能需要这样的东西:

function get_all_after_array_key($array,$key){
    $currentKey = array_search($key, array_keys($array));
    $hasNextKey = (isset($array[$currentKey + 1])) ? TRUE : FALSE;
    $array = array_keys($array);
    $after = [];
    do {
        if(isset($array[$currentKey + 1])) {
            $hasNextKey = TRUE;
            $after[] = $array[$currentKey + 1];
            $currentKey = $currentKey + 1;
        } else {
            $hasNextKey = FALSE;
        }
    } while($hasNextKey == TRUE);
    return $after;
}
9cbw7uwe

9cbw7uwe2#

使用array_search函数的解决方案:

$array = [441, 212, 314, 406];
$val = 441;

$currentKey = array_search($val, $array);

//Check for possible bool value returned by array_search
//Check for possible random index values

if(!is_bool($currentKey) & array_is_list($array)) {
  $before = $array[$currentKey ? $currentKey-1 : count($array)-1];
  $after = $array[($currentKey != count($array)-1) ? $currentKey+1 : key($array)];
}

var_dump($before, $after);

输出:

int(406)
int(212)

http://php.net/manual/en/function.array-search.php

iq0todco

iq0todco3#

$key = array_search ('441', $arr);
$beforeKey = $key-1;
if($beforeKey<1)
{ $beforeKey = count($array)-1; }
$afterKey = $key+1;
$beforeValue = $array[$beforeKey];
$afterValue = $array[$afterKey];

相关问题