我想得到值before和after一个PHP数组的特定值。例如,我有:
before
after
$array = (441, 212, 314, 406);
我的$specific_value是441。在这个例子中,我应该得到before(406)和after(212)。如果我的值是212,我应该得到之前(441)和之后(314)。
$specific_value
441
406
212
314
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; }
9cbw7uwe2#
使用array_search函数的解决方案:
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
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];
3条答案
按热度按时间wkftcu5l1#
对于递归键,搜索后可能需要这样的东西:
9cbw7uwe2#
使用
array_search
函数的解决方案:输出:
http://php.net/manual/en/function.array-search.php
iq0todco3#